カスタムの左右の UINavigationBar アイテムの左右の水平パディングを削除するにはどうすればよいですか? iOS がデフォルトで設定する 10 ポイントまでのパディングがあるようです。
左と右のナビゲーション バー ボタンをカスタマイズしています (独自の backButtonItem を設定することをあきらめたため、leftBarButtonItem を使用しています)。
どちらの場合でも (左または右)、これらのカスタム ボタンを押すと、Apple は leftBarButtonItem の左側と rightBarButtonItem の右側にパディングを保持しているように見えます。UIButton のカスタム背景と画像プロパティの幅に関係なく、カスタム ビューとして左/右バー ボタン項目内に配置します。
UIBarButtonItems にはアクセスできる「フレーム」がないため、通常の UIView のようにスーパービュー内に配置することはできません。
このデフォルトのパディングを削除する方法について何か提案はありますか? 添付のスクリーンショットを参照して、幅をゼロに縮小しようとしているビットを確認してください。スクリーン ショットでは、プラス アイコンが右にずれて表示されています。これは、挿入したためです。ただし、強調表示された背景画像も、おそらくそのインセットを使用して、右側が切り取られています)。
次の画像を参照してください: https://skitch.com/starbaseweb/rj2e5/ios-simulator
参考までに、カスタム UIBarButtonItem を作成する方法を次に示します (この場合は、右のボタンです)。
- (UIBarButtonItem *)customAddButtonItemWithTarget:(id)target action:(SEL)action {
UIButton *customButtonView = [UIButton buttonWithType:UIButtonTypeCustom];
customButtonView.frame = CGRectMake(0.0f, 0.0f, 45.0f, 44.0f);
[customButtonView setBackgroundImage:
[UIImage imageNamed:@"bgNavBarButton-OutsideRight-Normal.png"]
forState:UIControlStateNormal];
[customButtonView setBackgroundImage:
[UIImage imageNamed:@"bgNavBarButton-OutsideRight-Highlighted.png"]
forState:UIControlStateHighlighted];
[customButtonView setImage:
[UIImage imageNamed:@"bgNavBarButton-Add-Normal.png"]
forState:UIControlStateNormal];
[customButtonView setImage:
[UIImage imageNamed:@"bgNavBarButton-Add-Highlighted.png"]
forState:UIControlStateHighlighted];
[customButtonView addTarget:target action:action
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customButtonItem = [[[UIBarButtonItem alloc]
initWithCustomView:customButtonView] autorelease];
[customButtonView setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f)];
//customButtonItem.imageInsets = UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f);
return customButtonItem;
}