7

バー ボタン アイテム間の空白スペースがかなり大きいことに気付きました。スペースを縮小して、タイトルのスペースを増やしたいと考えています。固定スペースを作成してボタンの間に追加しようとしましたが、うまくいきませんでした。誰もそれを行う方法を知っていますか?

UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    fixedItem.width = 10.0f;
self.navigationItem.rightBarButtonItems = @[settingsButtonItem, fixedItem, speakerButtonItem, fixedItem, favouriteButtonItem];
4

2 に答える 2

1

Xcode 6.4を使用すると、これは1行のコードでうまく機能しました!
https://stackoverflow.com/a/26469607/3634990

self.myBarButtonItem.imageInsets = UIEdgeInsetsMake(0, 25, 0, -25);

注 - 残念ながら、これはボタンのヒット領域を移動せず、その画像のみを移動します。しかし、ボタンを少しだけ動かす必要がある場合は、良い解決策です!

于 2015-07-31T16:16:41.317 に答える
1

あなたは近くにいますが、必要なのは負の固定スペースです。他の UIBarButtonItems がカスタム ビューを使用している場合は、それらのビューのフレームを確認してください。以下は、エッジをより強調する 2 つの右バー ボタン アイテムを追加する例です。あなたの場合、ボタンの間にも負のスペースを追加したいと思うでしょう。

UIBarButtonItem *negativeSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    negativeSpace.width = -8;

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(0, 0, 44, 44);
[backButton setImage:[[UIImage imageNamed:@"ic_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]
            forState:UIControlStateNormal];
backButton.imageView.tintColor = [UIColor whiteColor];
[backButton addTarget:self
               action:@selector(backPressed)
     forControlEvents:UIControlEventTouchUpInside];

self.backNavButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.backNavButton.enabled = NO;

UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom];
forwardButton.frame = CGRectMake(0, 0, 44, 44);
[forwardButton setImage:[forwardImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]
               forState:UIControlStateNormal];
forwardButton.imageView.tintColor = [UIColor whiteColor];
[forwardButton addTarget:self
                  action:@selector(forwardPressed)
        forControlEvents:UIControlEventTouchUpInside];

self.forwardNavButton = [[UIBarButtonItem alloc] initWithCustomView:forwardButton];
self.forwardNavButton.enabled = NO;

self.navigationItem.rightBarButtonItems = @[negativeSpace,self.forwardNavButton,self.backNavButton];
于 2015-04-08T19:49:46.877 に答える