以编程方式更改UIButton大小 - iOS

时间:2014-07-01 16:27:21

标签: ios objective-c cocoa-touch uibutton

我有一个使用Google Plus iOS SDK的简单iOS应用程序。我想自定义登录按钮。我设法让它看起来像我想要的,但我不能让按钮达到我想要的尺寸。 (我没有使用自动布局)。这是我的viewDidLoad中的代码:

[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateNormal];
[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateHighlighted];
[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateSelected];
addservice_4.layer.cornerRadius = 5;
addservice_4.layer.borderWidth = 1.0f;
addservice_4.layer.borderColor = [[UIColor blueColor] CGColor];

以编程方式执行上述更改后,我得到了最终结果:

UIButton screenshot

如您所见,按钮太宽。所以我尝试以编程方式更改其大小,但这也不起作用:

addservice_4.frame = CGRectMake(20, 22, 101, 30);

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

如果您必须在UIButton上设置图片属性,Apple建议使用尺寸合适的图片,如果使用图片资源则使用尺寸加倍。

如果这对你来说不是一个好的选择,我想你可以通过使用setBackgroundImage:forState而不是setImage:forState来使你的setFrame:方法正常工作:

[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateNormal];
[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateHighlighted];
[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateSelected];
addservice_4.layer.cornerRadius = 5;
addservice_4.layer.borderWidth = 1.0f;
addservice_4.layer.borderColor = [[UIColor blueColor] CGColor];
addservice_4.frame = CGRectMake(20, 22, 101, 30);

答案 1 :(得分:0)

最终使用Autolayout解决了问题(因为我相信它所带来的限制阻止了Google Plus SDK使按钮更大)。唯一的问题是,我现在必须修复其他问题的海市蜃楼,例如支持3.5英寸显示器等等,因为Autolayout真的很可怕...... :(