使用用户定义的运行时属性旋转(角度)UIView
Rotate (angle) a UIView, using User Defined Runtime Attributes
是否可以旋转 UIView 或 UIImageView,比如说 10 或 15 度,
实际使用用户定义的运行时属性?
还是只能用代码实现?
(注意 .. 我提到 "angle" 和 "by degrees" 是为了 google;它可能会与设备方向的 "rotating" 混淆改变。)
或者,您是否可以 subclass UIView 以这样一种方式公开用户定义的运行时属性,这就是这样做的? (我生锈了:/)
作为此答案的扩展 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
您可以为 UIView
个对象使用 layer.transform.rotation.z
键路径。
必须以弧度设置值:
结果:
所有转换关键路径都在 Apple documentation 中呈现。
是否可以旋转 UIView 或 UIImageView,比如说 10 或 15 度,
实际使用用户定义的运行时属性?
还是只能用代码实现?
(注意 .. 我提到 "angle" 和 "by degrees" 是为了 google;它可能会与设备方向的 "rotating" 混淆改变。)
或者,您是否可以 subclass UIView 以这样一种方式公开用户定义的运行时属性,这就是这样做的? (我生锈了:/)
作为此答案的扩展 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
您可以为 UIView
个对象使用 layer.transform.rotation.z
键路径。
必须以弧度设置值:
结果:
所有转换关键路径都在 Apple documentation 中呈现。