Reputation: 73
I have three UISlider
namely slider 1
: to scale, slider 2
: to adjust left/right and slider 3
: to adjust top/bottom position.
When slider 1
(scale) is adjusted, when adjusting slider 2
(left/right) scnnode
is not adjusted same scale value, it reduces to original scale value.
here is my code of three slider value:
@IBAction func didChangedSlider(_ sender: Any) {
switch slider.value {
case 0 ... 25 :
earsNode1.scale = SCNVector3(0.0011, 0.0011, 0.0011)
earsNode.scale = SCNVector3(0.0010, 0.0010, 0.0010)
earsNode.position = SCNVector3(-0.08, -0.035, -0.12)
earsNode1.position = SCNVector3(0.077, -0.035, -0.12)
isSizeIncreased = false
case 25 ... 50 :
earsNode1.scale = SCNVector3(0.0014, 0.0014, 0.0014)
earsNode.scale = SCNVector3(0.0014, 0.0014, 0.0014)
earsNode.position = SCNVector3(-0.08, -0.040, -0.12)
earsNode1.position = SCNVector3(0.077, -0.040, -0.12)
isSizeIncreased = true
case 50 ... 75 :
earsNode1.scale = SCNVector3(0.002, 0.002, 0.002)
earsNode.scale = SCNVector3(0.002, 0.002, 0.002)
earsNode.position = SCNVector3(-0.08, -0.050, -0.12)
earsNode1.position = SCNVector3(0.077, -0.050, -0.12)
isSizeIncreased = true
case 75 ... 100 :
earsNode1.scale = SCNVector3(0.003, 0.003, 0.003)
earsNode.scale = SCNVector3(0.003, 0.003, 0.003)
earsNode.position = SCNVector3(-0.08, -0.064, -0.12)
earsNode1.position = SCNVector3(0.077, -0.064, -0.12)
isSizeIncreased = true
default:
print("slider value \(slider.value)")
}
}
// slider2 - left/right
@IBAction func didChangedSliderLeftOrRight(_ sender: Any) {
switch slider2.value {
case 0 ... 25:
earsNode.position = SCNVector3(-0.083, -0.035, -0.099)
earsNode1.position = SCNVector3(0.083, -0.035, -0.099)
case 25 ... 50:
earsNode.position = SCNVector3(-0.081, -0.035, -0.099)
earsNode1.position = SCNVector3(0.081, -0.035, -0.099)
case 50 ... 75:
earsNode.position = SCNVector3(-0.077, -0.035, -0.099)
earsNode1.position = SCNVector3(0.077, -0.035, -0.099)
case 75 ... 100:
earsNode.position = SCNVector3(-0.073, -0.035, -0.099)
earsNode1.position = SCNVector3(0.073, -0.035, -0.099)
default:
print("slider2 value \(slider2.value)")
}
}
// slider3 - top/bottom
@IBAction func didChangedSliderTopOrBottom(_ sender: Any) {
switch slider3.value {
case 0 ... 25:
earsNode.position = SCNVector3(-0.079, -0.027, -0.099)
earsNode1.position = SCNVector3(0.079, -0.027, -0.099)
case 25 ... 50:
earsNode.position = SCNVector3(-0.079, -0.031, -0.099)
earsNode1.position = SCNVector3(0.079, -0.031, -0.099)
if isSizeIncreased {
earsNode.position = SCNVector3(-0.08, -0.040, -0.12)
earsNode1.position = SCNVector3(0.077, -0.040, -0.12)
}
case 50 ... 75:
earsNode.position = SCNVector3(-0.079, -0.035, -0.099)
earsNode1.position = SCNVector3(0.079, -0.035, -0.099)
if isSizeIncreased {
earsNode.position = SCNVector3(-0.08, -0.054, -0.12)
earsNode1.position = SCNVector3(0.077, -0.054, -0.12)
}
case 75 ... 100:
earsNode.position = SCNVector3(-0.079, -0.039, -0.099)
earsNode1.position = SCNVector3(0.079, -0.039, -0.099)
if isSizeIncreased {
earsNode.position = SCNVector3(-0.08, -0.060, -0.12)
earsNode1.position = SCNVector3(0.077, -0.060, -0.12)
}
default:
print("slider3 value \(slider3.value)")
}
}
}
here is my screenshot
My issue is when user change any slider value, its not changing from last position of slider adjusted. Slider value should be adjusted from already adjusted position.
Upvotes: 0
Views: 652
Reputation: 1639
Copy/Paste and Save in Xcode this file https://gist.github.com/jeremyconkin/a3909b2d3276d1b6fbff02cefecd561a
When use Vector Math in your sliders (I rewrite only 1st):
@IBAction func didChangedSlider(_ sender: Any) {
switch slider.value {
case 0 ... 25 :
earsNode1.scale += SCNVector3(0.0011, 0.0011, 0.0011)
earsNode.scale += SCNVector3(0.0010, 0.0010, 0.0010)
earsNode.position += SCNVector3(-0.08, -0.035, -0.12)
earsNode1.position += SCNVector3(0.077, -0.035, -0.12)
isSizeIncreased = false
case 25 ... 50 :
earsNode1.scale += SCNVector3(0.0014, 0.0014, 0.0014)
earsNode.scale += SCNVector3(0.0014, 0.0014, 0.0014)
earsNode.position += SCNVector3(-0.08, -0.040, -0.12)
earsNode1.position += SCNVector3(0.077, -0.040, -0.12)
isSizeIncreased = true
case 50 ... 75 :
earsNode1.scale += SCNVector3(0.002, 0.002, 0.002)
earsNode.scale += SCNVector3(0.002, 0.002, 0.002)
earsNode.position += SCNVector3(-0.08, -0.050, -0.12)
earsNode1.position += SCNVector3(0.077, -0.050, -0.12)
isSizeIncreased = true
case 75 ... 100 :
earsNode1.scale += SCNVector3(0.003, 0.003, 0.003)
earsNode.scale += SCNVector3(0.003, 0.003, 0.003)
earsNode.position += SCNVector3(-0.08, -0.064, -0.12)
earsNode1.position += SCNVector3(0.077, -0.064, -0.12)
isSizeIncreased = true
default:
print("slider value \(slider.value)")
}
}
Upvotes: 1