子类uibutton中的setframe不调整帧

时间:2012-11-01 21:39:52

标签: iphone objective-c inheritance uibutton

我创建了UIButton的子类,我想设置一个“填充”。我希望按钮的框架每侧的宽度始终比文本宽15个像素。

在drawRect方法中,我将按钮的框架设置为比文本宽度宽30 px。但是当我尝试这样做时,框架根本没有调整。改变我的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)]; 
}

感谢您的回答!!

1 个答案:

答案 0 :(得分:2)

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

drawRect:中你应该做的唯一事情实际上是根据当前状态为视图渲染内容。 drawRect:中不应更改任何州。