質問

私は持っています UIViewController その右側に情報ボタンを表示するようにセットアップ UINavigationItem このような:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(toggleAboutView) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];

それは完全に機能しますが、唯一の問題は、ボタンの右側にスペースがほとんどないかまったくないことです。

Infobutton

ボタンが右側から約5 pxを移動する方法はありますか?

ありがとう。

役に立ちましたか?

解決

infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);

他のヒント

infobutton.contentEdgeInsets(またはImageEdgensets)を設定してみてください。何かのようなもの

infoButton.contentEdgeInsets = (UIEdgeInsets){.right=10};

「システム」ボタンで機能するかどうかはわかりませんが、そうかもしれません。

それがうまくいかない場合、最も簡単な方法は、おそらくそれをuiview内に貼り付けることです。

編集: おそらくツールバーコール [customView sizeThatFits:blah] 「希望したい」ビューの大きさを知るために。上記のコードは、「10ピクセルの右端の挿入図を追加する」を意味するはずです。これは、通常(カスタム)ボタンの場合、サイズを10ピクセル大きくします。

uibuttonは、標準の情報ボタンの固定サイズを返し、挿入図を無視しているようです。 ContentRectForBoundsに影響を与えることにより、コードは「動作」します:およびImageRectForContententEntRect:メソッドは、アイコンが描画される場所に変更されますが、実際にはボタンのサイズを変更しません。アイコンがボタンの外側に描画されているのではないかと思われます。これは、「タッチ可能な」rectが間違っていることを意味する可能性があります(ただし、ツールバーは通常のuibarbuttonitemsのタッチ長方を増やすようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top