如何在界面构建器中旋转UIImageView?

7

在XCode的“界面生成器”中是否可以旋转UIImageView?就像我可以在Photoshop中做到缩放和旋转图像一样。

我知道可以通过代码实现,但是否有办法在界面生成器中实现此功能呢?


false ... Xcode允许您使用运行时参数绑定任何所需的“操作”。请阅读下面我的回答。 - Gabriele
4个回答

37

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

旋转


如果有需要转换程序,这个网站非常有用:https://aci-birimleri-cevirici.hesabet.com 不过它是土耳其语。 - Ucdemir

7

是的,你可以使用一个小技巧来实现。

在你的代码中声明一个新的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

现在,您可以直接在Interface Builder上使用名为“rotation”的运行时参数,如下图所示,在您喜欢的任何UIView上使用它。

enter image description here

显然,Interface Builder不会在其内部呈现中旋转视图,因为它只会影响运行时呈现。


6

在当前版本的Xcode中,您无法实现此操作。您可以向苹果提交一个功能请求,网址为:https://feedbackassistant.apple.com/

不过,如果您想要实现它,您需要编写一些代码。

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

theView.transform = CGAffineTransformRotate(theView.transform, radians)

2
有点烦人,谢谢你的代码片段;-) - gpichler

3
不,这在界面构建器中不可能实现,但代码非常简单:
#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

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

imageView.transform = rotateTransform;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接