使用用户定义的运行时属性旋转(angular度)UIView
是否有可能旋转UIView或UIImageView,10或15度,
实际上使用用户定义的运行时属性?
还是只能在代码中完成?
(注意:为了谷歌,我提到了“angular度”和“度数”,可能会因为设备方向的改变而产生“旋转”的混淆)
或者,你可能以这样的方式子类化 UIView,用户定义的运行时属性将被暴露,这是什么? (我生锈了/)
您可以使用UIView
对象的layer.transform.rotation.z
关键path。
值必须以弧度设置:
结果:
所有转换关键path都在Apple文档中介绍。
在扩展到这个答案如何访问“发件人”对象的用户定义的运行时属性? ,您可以检索运行时值作为度数的NSNumber,然后执行旋转。 当您想要旋转发生时触发界面生成器中的IBAction
。
#define RADIANS(degrees) ((degrees * M_PI) / 180.0) @interface RTFRotatingView : UIView @end @implementation RTFRotatingView - (IBAction)performRotation:(UIControl *)sender { if ([sender respondsToSelector:@selector(keyName)]) { NSNumber *degrees = [sender valueForKey:@"keyName"]; CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(degrees.doubleValue)); self.transform = rotateTransform; } } @end
- 使用CGContextDrawImage旋转图像
- iOS8中CGAffineTransform的animation看起来与iOS7中的不同
- CGAffineTransformMakeRotation负M_PI
- 在iPhone 5s以上的设备上,CAShapeLayer不会随CGAffineTransformRotate旋转
- 将转换应用于UITextView – 防止内容大小调整
- 检查CGRect是否包含在另一个(已转换的)矩形中
- CGAffineTransform缩放和平移 – 在animation之前跳转
- CGAffineTranformRotate atan2不准确
- UIKitdynamic与现有的仿射变换