imageview.transform里面的UIButton子类奇怪的行为

时间:2018-03-28 15:14:18

标签: ios objective-c iphone ios11 ios11.2

我创建了一个UIButton子类,并添加了一个IBInspectable属性,可以在imageView内旋转UIButton。在InterfaceBuilder中,所有这些似乎都很完美,但在运行时,它表现得很奇怪。

这是我的代码

MyButton.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中如下所示

Series of custom button rotated to look like teeth inside mouth

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

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

Series of custom button rotated to look like teeth inside the mouth at runtime

我尝试的是:

  1. 我评论了

    self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    
  2. 然后按钮获得适当的高度宽度但看起来不好,因为它们需要旋转

    1. 我已将代码更改为

       self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
      
    2. 它有点工作。

      那么我缺少什么或者我做错了什么?

1 个答案:

答案 0 :(得分:-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);

感谢;