使用用户定义的运行时属性旋转(角度)UIView

时间:2015-08-15 17:50:01

标签: ios uiview uistoryboard cgaffinetransform

是否可以旋转UIView或UIImageView,比如10或15度,

实际使用用户定义的运行时属性?

或者它只能在代码中完成吗?

(注意......为了谷歌,我提到“角度”和“按度”;它可能会混淆“旋转”设备方向变化的想法。)

或者,您是否可以继承 UIView,以便公开用户定义的运行时属性,这样做呢? (我生锈了:/)

2 个答案:

答案 0 :(得分:23)

您可以使用layer.transform.rotation.z对象的UIView密钥路径 值必须以弧度为单位设置:

enter image description here

结果:

enter image description here

所有转化关键路径都显示在Apple documentation

答案 1 :(得分:4)

在对此答案How to access User Defined Runtime Attribute from the 'sender' object?的扩展中,您可以将运行时值检索为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