在iOS中,我们可以设置UIButton的字体和标题并获得其宽度吗?

时间:2012-07-19 15:10:19

标签: ios uibutton

在iOS中,我们可以设置UIButton并获取其宽度,还是必须设置其宽度然后设置其内容?

似乎我们可以

[someString sizeWithFont:someFont].width

获取宽度,然后将其设置为按钮的宽度(通过设置其框架),然后设置该标题和字体。但是我们可以设置按钮的字体和标题(并自动调整按钮),然后获得宽度吗?

2 个答案:

答案 0 :(得分:8)

使用UIView的sizeToFit方法(http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW11

[button setTitle:@"Hello World" forState:UIControlStateNormal];
[button sizeToFit];
float width = button.frame.size.width;

答案 1 :(得分:0)

sizeToFit 会起作用,但它不会给你很大的灵活性,因为它会包裹文本的宽度和高度。一个更好的方法是找出你可以用这个做的尺寸...

(iOS 8及以上版本)

CGSize buttonSize = [button.titleLabel sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:NSFontAttributeName ,[UIFont fontWithName:@"HelveticaNeue-Bold" size:9.0], nil]].width;

(iOS 7及以下)

CGSize buttonSize = [button.titleLabel sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:9.0]].width;

然后你可以通过使用 buttonSize

调整框架来添加边距等
[button setFrame:CGRectMake(0, 0, buttonSize.width + 20, buttonSize.height)];