【发布时间】:2018-03-28 15:14:18
【问题描述】:
我创建了一个 UIButton 子类并添加了一个 IBInspectable 属性,该属性在 UIButton 内旋转 imageView。在 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 中如下所示
我在这里所做的是我使用了 32 MyButton 让它看起来像牙齿。
但在运行时,它看起来像这样
我尝试的是:
-
我已经评论了
self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
然后按钮获得适当的高度宽度,但看起来不太好,因为它们需要旋转
-
我已将代码更改为
self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
它有点工作。
那么是我遗漏了什么还是我做错了什么?
【问题讨论】:
-
您的代码看起来不错!您是否使用自动布局进行设计?可能是自动布局约束中的问题!
-
是的,我正在使用自动布局,在情节提要中一切似乎都很好,没有约束问题。令人震惊的是,当我从 Xcode 调试视图时,所有视图都正确重新对齐
-
看起来很奇怪!无论如何,您可以通过清除所有约束并检查结果来尝试一下
-
图像设置 aspectfit 并清除约束,并再次给它们适当的约束。
-
你为什么打电话给[self setUpView];在不同的地方这么多次?这是不好的做法。
标签: ios objective-c iphone ios11 ios11.2