Ios UIButton子类内部的imageview.transform异常行为
我制作了一个Ios UIButton子类内部的imageview.transform异常行为,ios,objective-c,iphone,ios11,ios11.2,Ios,Objective C,Iphone,Ios11,Ios11.2,我制作了一个UIButton子类,并添加了一个IBInspectable属性,该属性在UIButton内部旋转imageView。在InterfaceBuilder中,一切似乎都工作得很好,但在运行时,它的行为却很奇怪 这是我的密码 我的按钮 @implementation MyButton -(void)awakeFromNib{ [super awakeFromNib]; [self setUpView]; } -(void)layoutSubviews{ [
UIButton
子类,并添加了一个IBInspectable属性,该属性在UIButton
内部旋转imageView
。在InterfaceBuilder中,一切似乎都工作得很好,但在运行时,它的行为却很奇怪
这是我的密码
我的按钮
@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颗我的纽扣让它看起来像牙齿
但在运行时,它看起来是这样的
我尝试的是:
self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
那么,我是否遗漏了什么,或者我做错了什么?我认为问题在于顺序。在setUpView之后调用LayoutSubView,会干扰UIImageView 因此,尝试一个小的修复。使用此选项更改布局子视图方法
-(void)layoutSubviews{
[super layoutSubviews]; // Supper layoutSubviews should be on top
[self setUpView]; // and then customization
}
现在你应该可以像这样变换你的图像视图了
self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
谢谢, 能否向上提供一个带有此问题的示例项目?此解决方案不是建设性的交换超级方法调用不会改变不正确的旋转维度:)请先尝试一下。您的代码似乎很好!您是否使用自动布局进行设计?可能是自动布局约束中的问题!是的,我使用自动布局,在故事板中,一切看起来都很好,没有约束问题。令人震惊的是,当我从Xcode调试视图时,所有视图都正确地重新对齐了。看起来很奇怪!无论如何,您可以尝试一下,清除所有约束,检查结果图像集aspectfit和clear constraint是什么,然后再次给它们适当的约束;这么多次在不同的地方?这是个坏习惯。