当前位置: 首页 > 知识库问答 >
问题:

iOS7过度导航栏按钮填充

巫坚白
2023-03-14

使用LeftBarItems和RightBarItems时,我遇到过过多的UIBarButtonItem填充/间距(请参见下图)。UIBarButtonims上使用的图标不包含额外的填充。我想知道是什么原因造成的?

共有3个答案

沈自珍
2023-03-14

苹果默默地增加了UIBarButtonItem的水平行间距限制,可悲的是,仍然没有添加任何UI外观方法来调整UIBarButtonItem的水平定位。

最好的解决方案(对我来说有效)是使用initBackCustomView:将您的UIBarButtonItem包装在UIView中,并调整自定义视图的边界以获得所需的定位。这里有一个关于如何做到这一点的好答案。

如果你想更进一步,你可以在UIBarButtonim上创建一个类别,使用类方法返回你在整个应用程序中使用的条形按钮。这样,当您需要一个工具栏按钮时,您可以调用如下内容:

self.navigationItem.leftBarButtonItem = [UIBarButtonItem mySearchBarButtonItemWithTarget:self selector:@selector(search)];
公西鸿博
2023-03-14

您可以移动图像

self.myBarButtonItem.imageInsets = UIEdgeInsetsMake(0, 25, 0, -25);
陆俊捷
2023-03-14

我使用它是为了在第一项之前删除空格。

但是,它在诸如uibarbuttonsystemadd之类的系统项之间不起作用,只在具有映像的uibarbuttonite中起作用。

@interface UIBarButtonItem (NegativeSpacer)
+(UIBarButtonItem*)negativeSpacerWithWidth:(NSInteger)width;
@end
@implementation UIBarButtonItem (NegativeSpacer)
+(UIBarButtonItem*)negativeSpacerWithWidth:(NSInteger)width {
    UIBarButtonItem *item = [[UIBarButtonItem alloc]
                             initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                             target:nil
                             action:nil];
    item.width = (width >= 0 ? -width : width);
    return item;
}
@end

像这样使用它:

UIBarButtonItem *item0 = [UIBarButtonItem negativeSpacerWithWidth:13];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"sidebar.png"]
                                                          style:UIBarButtonItemStylePlain
                                                         target:vc
                                                         action:@selector(sideMenuAction:)];
NSArray* items = @[item0, item1];
[vc.navigationItem setLeftBarButtonItems:items animated:NO];
[vc.navigationItem setLeftItemsSupplementBackButton:YES];
 类似资料:
  • 我一直在尝试为我的应用程序获得一个透明的导航栏,但我已经尝试到目前为止,并没有给我的结果,我正在寻找。 作为一个参考示例,下面是“Play Store”导航栏的外观: 注意,它是一个黑暗但透明的颜色。 我在应用程序中尝试了以下内容: 我已经将我的主题和单个支架的背景颜色设置为深色,但我的导航栏仍然是白色的,如下图所示: 正如你在上图中看到的,状态栏接受它的透明颜色,并尊重应用背景,但导航栏不接受。

  • ap.hideOptionButton() 隐藏导航栏右侧按钮。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">显示多个按钮</button> <button

  • ap.showOptionButton() 显示导航栏右侧按钮。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">显示 optionButton</button

  • ap.setOptionButton(OPTION | items, CALLBACK) 设置导航栏右侧按钮。 OPTION 参数说明 名称 类型 必填 描述 onClick Function 否 监听 optionButton 点击事件 reset Boolean 否 重置到系统默认按钮,默认为 false。当为 true 时,忽略其他参数 preventDefault Boolean 否 是否

  • 我正在将我的应用程序迁移到iOS 7。为了处理状态栏问题,我添加了以下代码 这在正常情况下工作正常。如果我正在更改方向(应用程序仅支持横向方向)或显示任何视图控制器并取消模型视图控制器,则我的视图控制器对齐方式将更改。状态栏再次与我的视图控制器重叠。这段代码根本不起作用。请指导我解决此状态栏问题。 案例2:这就是我展示视图控制器的方式 裁判: 提前谢谢。

  • 问题内容: 我想在导航栏的左侧快速显示图像。 我尝试添加导航栏按钮项并在那里设置图像。 问题是我必须使用非常小的图像才能使其很好地适应导航栏。但是制作如此小的图像会导致像素化,特别是在较大的手机iPhone 6和6 Plus上。 有没有一种方法可以使用高质量的图像,然后将框架设置为适合导航栏的边界? 我的尝试: 我尝试先将框架放在图像上,然后再放在条形按钮项上。但这抛出了一个错误: 没有更多上下文