2011-07-13 6 views
1

UIBarButtonSystemItemの幅をプログラムで取得する方法はありますか? widthプロパティは、システム項目に対して常に0を返します。特に、UIViewControllerのeditButtonItemプロパティの正確な幅を取得したいと考えています。UIBarButtonSystemItemの幅を取得する

iPhoneの場合、値は44ですが、iPadでは少し大きめですが、私はそれを釘付けにすることはできません。

+0

カップルの可能性ですが、それは動作します任意の答えはおそらく、文書化されていないAPIに依存しているだろうというのが私の推測です:http://stackoverflow.com/questions/5066847/get-the-width-of-a -uibarbuttonitem(注:私はこのコードをテストしていません) – JoBu1324

答えて

1

私は@ JoBu1324がコメントに残したリンクから私の答えを得ました。

ここに私が使用したコードがあります。ここで

UIBarButtonItem *item = /*...*/; 
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0; 
0

明らかUIBarButtonItemフレーム性質を持っていません。 としてUIBarButtonItemは、コード(文書化されたAPIの)からUIBarButtonItemのフレームを取得するためにその不可能NSObjectの(順番にフレームを持たない)、の直接のサブクラスです。

あなたは44を発見したとしてあなたは、幅を見つけるためにいくつかの他の方法に頼る必要はUIBarButtonItemプロパティwidthを持っていますが、それは一般的に0であるiPhone ;-)

+0

フレームと呼ばれるかどうかにかかわらず、ある種のフレームを持たなければなりません。公開APIを介してアクセスすることはできません。 – JoBu1324

+0

はいJoBu1324、私はすでにそれを言及しました。 – EmptyStack

0

editButtonItemの幅でありますシステムボタン。だから、私は通常、ボタンの中に私のローカライズされた文字列で私のカスタムボタンを使用するか、または左右のボタンの間に柔軟なスペースを追加するにはflexibleSpace UIBarbuttonItemを使用してください。文字列の幅は、NSStringの-sizeWithFontメソッドで計算できます。 UIBarButtonItemのスタイルUIBarButtonSystemItemFlexibleSpaceによって、柔軟な空間を得ることができます。

関連する問題