3

我创建了一个UIButton子类并添加了一个旋转imageView内部的 IBInspectable 属性UIButton。在 InterfaceBuilder 中,一切似乎都很完美,但在运行时,它的行为很奇怪。

这是我的代码

我的按钮.m

@implementation MyButton



-(void)awakeFromNib{
    [super awakeFromNib];
    [self setUpView];
}

-(void)layoutSubviews{
    [self setUpView];
    [super layoutSubviews];

}


-(void)prepareForInterfaceBuilder{
    [self setUpView];
}

-(void)setUpView{

    self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
}

@end

它在 Main.storyboard 中如下所示

一系列自定义按钮旋转,看起来像嘴里的牙齿

我在这里所做的是我使用了 32 MyButton 让它看起来像牙齿。

但在运行时,它看起来像这样

一系列自定义按钮在运行时旋转以看起来像嘴里的牙齿

我尝试的是:

  1. 我评论过

    self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    

然后按钮获得适当的高度宽度,但看起来不太好,因为它们需要旋转

  1. 我已将代码更改为

     self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    

它有点工作。

那么我有什么遗漏还是我做错了什么?

4

1 回答 1

-2

我认为问题在于秩序。setUpView 后调用 layoutSubviews,扰乱了 UIImageView。

所以尝试一个小的修复。用这个改变你的布局子视图方法;

-(void)layoutSubviews{
    [super layoutSubviews]; // Supper layoutSubviews should be on top
    [self setUpView]; // and then customization
}

所以现在你应该能够像这样转换你的 imageView;

self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);

谢谢;

于 2018-04-02T06:32:46.273 回答