坐上UINavigationBar的右侧摆脱空间(Get rid of the space on t

2019-08-31 13:54发布

所以,这就是我要完成的:

这是一个UINavigationBar一个UIBarButtonItem的是它和一个自定义的初始化UIButton
基本上是这样的:

UIButton *favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[favoriteButton addTarget:target
                   action:action
         forControlEvents:UIControlEventTouchUpInside];
favoriteButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f);

UIImage *backgroundImage = [[UIImage imageNamed:@"favorite-button-background-orange"]
                    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 0)];
[favoriteButton setBackgroundImage:backgroundImage
                          forState:UIControlStateNormal];

UIBarButtonItem *favoriteButtonItem = [[UIBarButtonItem alloc] initWithCustomView:favoriteButton];

问题是,我似乎无法得到对的右侧摆脱讨厌的小边框UINavigationBar

我试图设置自定义TitleView如“描述如何删除旁边的UIBarButtonItem填充 ”,但这并没有改变任何事情。

我也尝试添加其他的UIBarButtonItem用负宽度(如在一些相关博客文章我读暗示),但没有帮助。

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                 target:nil
                 action:nil];
negativeSpacer.width = -5.0f;
self.navigationItem.rightBarButtonItems = %[favoriteButtonItem, negativeSpacer];

我认为iOS版不会让我改变它,因为“圆角的边框”保留一些(不可避免的?)空间/填充? 所以我的问题是。 我应该如何解决这个限制? 我需要创建一个自定义UINavigationBar班? 我可以通过修改假货莫名其妙UIBarButtonItem ? 我只是使用了错误的成分?

Answer 1:

会有两种解决方案。 (它可能不是精确解)

1)你应该继承UINavigationBar和玩的。 例如,您可能不得不提醒你UIBarButtonItem自己在右上角

而不是使用2) UINavigationBar ,使用UIView并添加子视图,使其恰好看起来像UINavigationBar ,并使用它。

我希望第二个解决办法是在方便您的要求来实现。 我不认为会有任何其他方式来实现您的要求。



Answer 2:

有自定义默认导航栏按钮项目没有选项(back button, right bar button and left barbutton )在导航栏。 为了让你的要求,你可以使用自定义导航栏。



Answer 3:

你实际上提的第二个解决方案的工作(今天都iOS6的&7测试)。 的问题是,所述的elments rightBarButtonsItem阵列从右到左显示; 这意味着负空间实际上需要出现作为数组的第一项,以实现期望的效果。



文章来源: Get rid of the space on the right side of a UINavigationBar