【问题标题】:How can I rotate an UIImageView in Interface Builder?如何在 Interface Builder 中旋转 UIImageView?
【发布时间】:2013-01-17 05:24:57
【问题描述】:

是否可以在 XCode 的 Interface Builder 中旋转 UIImageView?就像我可以在 Photoshop 中那样,我可以缩放和旋转图像。

我知道这可以通过代码实现,但有没有办法在界面生成器中做到这一点?

【问题讨论】:

  • false ... Xcode 允许您使用运行时参数绑定您喜欢的任何“动作”。在下面阅读我的答案。

标签: iphone xcode uiimageview rotation interface-builder


【解决方案1】:

不,这在界面生成器中是不可能的,但代码非常简单:

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,
     RADIANS(120.0));

imageView.transform = rotateTransform;

【讨论】:

    【解决方案2】:

    您不能在当前版本的 Xcode 中执行此操作。您可以通过https://feedbackassistant.apple.com/向 Apple 提交功能请求

    但是如果你想这样做,你需要编写一些代码

    #define RADIANS(degrees) ((degrees * M_PI) / 180.0)
    
    theView.transform = CGAffineTransformRotate(theView.transform, radians)
    

    【讨论】:

    • 这有点烦人,感谢您的代码 sn-p ;-)
    【解决方案3】:

    是的,你可以,但使用一个小技巧。

    像这样在代码中声明一个新的 UIView 类别

    @interface UIView (IBRotateView)
    
    @property (nonatomic, assign) CGFloat rotation;
    
    @end
    
    
    @implementation UIView (IBRotateView)
    @dynamic rotation;
    
    - (void)setRotation:(CGFloat)deg
    {
        CGFloat rad = M_PI * deg / 180.0;
    
        CGAffineTransform rot = CGAffineTransformMakeRotation(rad);
    
        [self setTransform:rot];
    }
    
    @end
    

    现在您可以在任何您喜欢的 UIView 上直接在界面生成器上使用运行时参数“旋转”。

    显然界面生成器不会在其内部渲染中旋转视图,因为它只会影响运行时渲染。

    【讨论】:

      【解决方案4】:

      是的,您可以在界面生成器中执行此操作,而无需使用 layer.transform.rotation.z 运行时属性添加任何额外代码。请注意,此值以弧度为单位。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      相关资源
      最近更新 更多