UIBarButtonSystemItemの幅をプログラムで取得する方法はありますか? widthプロパティは、システム項目に対して常に0を返します。特に、UIViewControllerのeditButtonItemプロパティの正確な幅を取得したいと考えています。UIBarButtonSystemItemの幅を取得する
iPhoneの場合、値は44ですが、iPadでは少し大きめですが、私はそれを釘付けにすることはできません。
UIBarButtonSystemItemの幅をプログラムで取得する方法はありますか? widthプロパティは、システム項目に対して常に0を返します。特に、UIViewControllerのeditButtonItemプロパティの正確な幅を取得したいと考えています。UIBarButtonSystemItemの幅を取得する
iPhoneの場合、値は44ですが、iPadでは少し大きめですが、私はそれを釘付けにすることはできません。
私は@ JoBu1324がコメントに残したリンクから私の答えを得ました。
ここに私が使用したコードがあります。ここで
UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"];
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
明らかUIBarButtonItemはフレーム性質を持っていません。 としてUIBarButtonItemは、コード(文書化されたAPIの)からUIBarButtonItemのフレームを取得するためにその不可能NSObjectの(順番にフレームを持たない)、の直接のサブクラスです。
あなたは44を発見したとしてあなたは、幅を見つけるためにいくつかの他の方法に頼る必要はUIBarButtonItemプロパティwidth
を持っていますが、それは一般的に0であるiPhone ;-)
フレームと呼ばれるかどうかにかかわらず、ある種のフレームを持たなければなりません。公開APIを介してアクセスすることはできません。 – JoBu1324
はいJoBu1324、私はすでにそれを言及しました。 – EmptyStack
にeditButtonItemの幅でありますシステムボタン。だから、私は通常、ボタンの中に私のローカライズされた文字列で私のカスタムボタンを使用するか、または左右のボタンの間に柔軟なスペースを追加するにはflexibleSpace UIBarbuttonItemを使用してください。文字列の幅は、NSStringの-sizeWithFont
メソッドで計算できます。 UIBarButtonItemのスタイルUIBarButtonSystemItemFlexibleSpace
によって、柔軟な空間を得ることができます。
カップルの可能性ですが、それは動作します任意の答えはおそらく、文書化されていないAPIに依存しているだろうというのが私の推測です:http://stackoverflow.com/questions/5066847/get-the-width-of-a -uibarbuttonitem(注:私はこのコードをテストしていません) – JoBu1324