1

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

看来我们可以

[someString sizeWithFont:someFont].width

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

4

2 回答 2

9

使用sizeToFitUIView 的方法(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;
于 2012-07-19T15:27:35.837 回答
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)];
于 2015-04-29T02:48:59.593 回答