如何使用子视图旋转角度获取滑块值
How to get slider value with subview rotation angle
您好,我使用 UISlider 并根据滑块值旋转 image/subview。滑块最小值为零,最大值为 360。我有多个视图。使用滑块,我可以完美地旋转图像。
UIView *subView = [self.view viewWithTag:100];
subView.transform = CGAffineTransformMakeRotation(slider.value * 2*M_PI / slider.maximumValue);
我选择了另一个子视图,然后再次选择了第一个视图。因此,我需要根据视角设置滑块值。但是我错了。
CGAffineTransform transform = subView.transform;
CGFloat angle = atan2f(transform.b, transform.a);
[slider setValue:(angle / ((2*M_PI)/ 360)) animated:true];
我做错了什么?
提前致谢。
经过一番努力,我得到了答案。我在 90 度后得到负角。所以如果我得到负角,我计算所需角度和当前角度之间的差异。
CGFloat angle = [(NSNumber *)[subView valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
if (angle < 0) {
angle = 6.28 + angle;
}
[slider setValue:(angle*360 / (2*M_PI)) animated:true];
您好,我使用 UISlider 并根据滑块值旋转 image/subview。滑块最小值为零,最大值为 360。我有多个视图。使用滑块,我可以完美地旋转图像。
UIView *subView = [self.view viewWithTag:100];
subView.transform = CGAffineTransformMakeRotation(slider.value * 2*M_PI / slider.maximumValue);
我选择了另一个子视图,然后再次选择了第一个视图。因此,我需要根据视角设置滑块值。但是我错了。
CGAffineTransform transform = subView.transform;
CGFloat angle = atan2f(transform.b, transform.a);
[slider setValue:(angle / ((2*M_PI)/ 360)) animated:true];
我做错了什么?
提前致谢。
经过一番努力,我得到了答案。我在 90 度后得到负角。所以如果我得到负角,我计算所需角度和当前角度之间的差异。
CGFloat angle = [(NSNumber *)[subView valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
if (angle < 0) {
angle = 6.28 + angle;
}
[slider setValue:(angle*360 / (2*M_PI)) animated:true];