9

UIViewController右側に情報ボタンを次のように表示するように設定しましたUINavigationItem

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

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

情報ボタン

ボタンを右側から約5ピクセル移動させる方法はありますか?

ありがとう。

4

2 に答える 2

17
infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);
于 2010-09-28T09:20:50.993 に答える
14

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

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

「システム」ボタンで機能するかどうかはわかりませんが、機能する可能性があります。

それが機能しない場合、最も簡単な方法はおそらくUIView内に貼り付けることです。

編集:おそらくツールバーは[customView sizeThatFits:blah]、ビューが「大きくなりたい」かどうかを調べるために呼び出します。上記のコードは、「10ピクセルの右端のはめ込みを追加する」ことを意味することになっています。これにより、通常の(カスタム)ボタンの場合も、サイズが10ピクセル大きくなります。

UIButtonは、インセットを無視して、標準の情報ボタンの固定サイズを返すようです。コードは、contentRectForBounds:メソッドとimageRectForContentRect:メソッドに影響を与えることで「機能」します。これらのメソッドは、アイコンが描画される場所を変更しますが、実際にはボタンのサイズを変更しません。アイコンがボタンの外側に描画されているのではないかと思います。これは、「タッチ可能な」四角形が間違っていることを意味している可能性があります(ただし、ツールバーは通常のUIBarButtonItemのタッチ四角形を増やしているように見えるので、問題ではないかもしれません)。

于 2010-09-12T06:14:24.257 に答える