子分类的Uibutton中的setFrame未调整框架



我做了一个Uibutton的子类,我想设置一个"填充"。我希望按钮的框架在每一侧总是比文本更宽15个像素。

在绘制方法中,我将按钮的框架设置为比文本的宽度宽30。但是,当我尝试做到这一点时,框架根本无法调整。我更改Uibutton的框架后,该框架是否会得到调整?如何调整框架设置填充?

这是我的代码:

- (void)drawRect:(CGRect)rect{
[self setBackgroundImage:[[UIImage imageNamed:@"submitBtn.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0] forState:UIControlStateNormal];
[self setFrame:CGRectMake(rect.origin.x, rect.origin.y-90, self.titleLabel.frame.size.width + 30, self.frame.size.height)]; 
}

感谢您的答案!

您应该覆盖setTitle:forState:方法并在此调整框架。您还应将背景图像设置为drawRect:以外的其他地方。一个好地方是initXXX方法。

您在drawRect:中唯一要做的就是根据其当前状态为视图提供内容。drawRect:中不应更改状态。

最新更新