在 iOS 中,我们可以设置一个 UIButton 并获取它的宽度,还是必须设置它的宽度然后设置它的内容?
看来我们可以
[someString sizeWithFont:someFont].width
获取宽度,然后将其设为按钮的宽度(通过设置其框架),然后设置该标题和字体。但是我们可以只设置按钮的字体和标题(并自动调整按钮大小),然后获取宽度吗?
使用sizeToFit
UIView 的方法(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;
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)];