我在界面构建器中有一个UICustomButton(UIButton的子类)。我想在UICustomButton中更改此按钮的框架。
我尝试了以下代码:
// make it 10 points wider and higher
CGRect newFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width + 10, self.frame.size.height + 10);
self.frame = newFrame;
awakeFromNib:, drawRect:
中的
它们都没有奏效,结果没有改变。
答案 0 :(得分:2)
awakeFromNib
和drawRect:
都不合适。
您可以在layoutSubviews
中更改其框架,但如果您的应用使用自动布局,则可能会遇到麻烦。
答案 1 :(得分:2)
不要那样做!这是糟糕的架构!
视图永远不应该改变它自己的框架。它始终是父视图调整其子项的大小。 如果您检测到视图中需要另一个帧:向父视图发送委托调用并更改其中的帧。委托方法可能如下所示
- customButton:(UIButton *)button requestNewFrame:(CGRect)frame
{
button.frame = newFrame;
// some storing method so you remember the frame on rotations and stuff
}
提醒一下:子视图总是在
中调整大小- (void)layoutSubviews //UIView
- (void)viewDidLayoutSubviews //UIViewController
这使得您的代码对于不同的UIInterfaceOrientations和不同的设备是安全的。
答案 2 :(得分:0)
我把它放在viewDidLoad中。如果你把它放在一个重复的方法中,每次调用时它的大小都会增加。