1

何らかの理由で、uibarbuttonアイテムにカスタムの背景画像を設定すると、次のようになります。

UIImage *button30 = [[UIImage imageNamed:@"nav_bar_button_orange.png"]
                     resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

私のボタンは、水平方向の反転で「ジャンプ」またはその幅(またはより正確にはテキストの両側のパディング)を更新しています。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain handler:^(id sender) {
    [self dismissViewControllerAnimated:YES completion:nil];
}];

ハンドラービットを無視します。BlocksKitを使用しています。

あなたはそれがここで起こっているのを見ることができます:http ://screencast.com/t/HZRBS70OT6wt

追加情報

これは、コードではなくストーリーボードのボタンを配置したときにも実行されます。水平反転でのみ発生するようです。

原因:

どうやらそれはカスタムフォントの使用と関係があります。最初は幅を正しく計算していないようです。

サンプルプロジェクト

このサンプルプロジェクトで問題を再現しました。誰かがこれを修正する方法を知っていればいいと思います。誰もそれに遭遇していないとは信じられません。

4

2 に答える 2

4

この動作の理由はわかりませんが、イメージ インセットを設定すると、これを修正するのに役立ちます。 ここに画像の説明を入力

于 2013-03-07T21:40:02.757 に答える
0

バー ボタンで UI を変更する必要がある場合は常に、カスタム ビューで初期化することをお勧めします。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:button30 forState:UIControlStateNormal];
[button addTarget:self action:@selector(dismissFuction:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
于 2013-03-07T01:24:36.963 に答える