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)];