按钮的大小

时间:2014-01-29 15:16:35

标签: ios layout uibutton

我在“界面”构建器中放置了一个默认按钮,它有一些默认大小

然后我以编程方式更改了标题,并收到了:

enter image description here

这是我的按钮代码:

 NSString *btnGetRegisterCodeTitle = NSLocalizedString(@"Get Registration Code", @"Title on button");
[_btnRegister setTitle:btnGetRegisterCodeTitle forState:UIControlStateNormal];

我需要对按钮做什么,使其自动布局其框架,以便整个(3个单词)标题适合它?

3 个答案:

答案 0 :(得分:0)

更改标题后调用sizeToFit

[yourButton sizeToFit];

答案 1 :(得分:0)

这里到底发生了什么,当您更改按钮的标题时,文本变得超出范围。 您可以做的是,以编程方式设置按钮大小以适合其内容/标题。

为此用途:

NSString *btnGetRegisterCodeTitle = NSLocalizedString(@"Get Registration Code", @"Title on button");
[_btnRegister setTitle:btnGetRegisterCodeTitle forState:UIControlStateNormal];
[_btnRegister sizeToFit];

此处sizeToFit方法将自动调整UIButton的大小,使得Title不会合并/重叠.. :)

<强>更新

查看this Question

我已经从那里复制了所选答案,以防问题被删除..

查看NSString方法-sizeWithFont:。它会返回一个CGSize,它会告诉您按钮中文本的大小。然后,您可以根据此大小调整按钮的框架,将所需的填充添加到按钮框架的宽度和高度。像这样:

NSString *msg = @"The button label";
UIFont *font = [UIFont systemFontOfSize:17];
CGSize msgSize = [msg sizeWithFont:font];
CGRect frame = button.frame;
frame.size.width = msg.size.width+10;
frame.size.height = msg.size.height+10;
button.frame = frame;

答案 2 :(得分:0)

NSString *btnGetRegisterCodeTitle = NSLocalizedString(@"Get Registration Code", @"Title on button");
CGSize size = [btnGetRegisterCodeTitle sizeWithFont:_btnRegister.titleLabel.font];
[_btnRegister setTitle:btnGetRegisterCodeTitle forState:UIControlStateNormal];
_btnRegister.frame = CGRectMake(_btnRegister.frame.origin.x, 
                                _btnRegister.frame.origin.y,
                                size.width, size.height);

这个怎么样? 它实际上与上面的答案相同,只是更简单,所以你不会错误地弄错。 (使用按钮标题的字体而不是系统字体)。 如果需要,您仍然可以尝试将10个点添加到宽度和高度,如上一个答案。