这是一个奇怪的问题。
情况是我想调整 UIBarButtonItem(s) 之间的间距,使它们仅相隔 2 个像素。
我可以很容易地用 UIToolbar 做到这一点:
// Make bottom button bar buttons
NSMutableArray *bottomButtons = [[NSMutableArray alloc] initWithCapacity:3];
// Create spacer between buttons
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[bottomButtons addObject:spacer];
UIBarButtonItem* noSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
noSpace.width = -10;
// Add button 1
self.addAlbumButton = [UIGlossyButton buttonWithType:UIButtonTypeCustom];
[self.addAlbumButton setTitle:@"Button 1" forState:UIControlStateNormal];
[self.addAlbumButton addTarget:self action:@selector(addAlbum:) forControlEvents:UIControlEventTouchUpInside];
self.addAlbumBarButton = [[UIBarButtonItem alloc] initWithCustomView:self.addAlbumButton];
[bottomButtons addObject:self.addAlbumBarButton];
[bottomButtons addObject:noSpace];
// Add button2
self.downloadAllItemsButton = [UIGlossyButton buttonWithType:UIButtonTypeCustom];
[self.downloadAllItemsButton setTitle:@"Button 2" forState:UIControlStateNormal];
[self.downloadAllItemsButton addTarget:self action:@selector(downloadAllItemsAction:) forControlEvents:UIControlEventTouchUpInside];
self.downloadAllItemsBarButton = [[UIBarButtonItem alloc] initWithCustomView:self.downloadAllItemsButton];
[bottomButtons addObject:self.downloadAllItemsBarButton];
// add all button to bottom toolbar
[self.bottomToolbar setItems:bottomButtons];
问题是当我尝试使用导航栏执行此操作时。出于某种原因,当我插入一个固定长度的按钮(具有负值)时,它不会缩小按钮之间的空间。我知道固定长度按钮在那里并且工作,因为如果我将宽度更改为正数,按钮之间的间距会增加。
代码基本相同,只是我没有将按钮添加到 self.bottomToolbar,而是调用以下代码:
self.navigationItem.rightBarButtonItems = bottomButtons;
我发现与 MasterViewController 相同的问题。我正在使用 splitviewcontroller 并且底部工具栏工作正常,但顶部工具栏有相同的间距问题。那个问题是我不能让按钮之间的空间小于默认值。
似乎 navigationItem.rightBarButtonItems 的工作方式与所有其他工具栏不同。