在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置

Posted

技术标签:

【中文标题】在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置【英文标题】:Changing vertical position of UIBarButtonItem on iOS 8.2 【发布时间】:2015-03-15 12:15:34 【问题描述】:

这是我的导航栏

我在更改导航栏上设置UIBarButtonItem 的垂直位置时遇到问题。我想将按钮项“设置”向下移动

这是我的代码

 UIBarButtonItem *settingsItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:nil];
 self.navItem.rightBarButtonItem = settingsItem; 
    [[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0,-10) forBarMetrics:UIBarMetricsDefault];

我一次又一次地尝试过。好像不行

谁能建议我如何将“设置”按钮项向下移动?

【问题讨论】:

代码是什么,在导航栏项中添加设置按钮?? 这是我的代码 [code] UIBarButtonItem *settingsItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:nil]; self.navItem.rightBarButtonItem = settingsItem; [/code] 【参考方案1】:

您可以轻松地将自定义按钮添加到 NavigationBarItem,方法如下,

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; //create custom Button
    [button setTitle:@"Settings" forState:UIControlStateNormal];
    [button.titleLabel setFont:[UIFont systemFontOfSize:14.0]];
    [button setTitleColor:[UIColor colorWithRed:179.0/255.0 green:40.0/255.0 blue:18.0/255.0 alpha:1] forState:UIControlStateNormal];
    button.frame = CGRectMake(0, 0, 50, 20); //Button frame
    [button addTarget:self action:@selector(yourCustomSelectorHere) forControlEvents:UIControlEventTouchUpInside]; //Add action method to the button here
    UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 63, 33)];
    backButtonView.bounds = CGRectOffset(backButtonView.bounds, -14, -7);
    [backButtonView addSubview:button];
    UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithCustomView: backButtonView]; //set button as UIBarButtonItem
    self.navigationItem.rightBarButtonItem = barBtnItem; //set barBtnItem to rightBarButtonItem

通过更改backButtonView.bounds 值,您可以更改按钮的来源

【讨论】:

我尝试使用你的方式,但它不像我之前的方式那样工作 我想把“设置”下移,但是当我尝试过你的方法时,它没有改变。 我不知道。我想将它移动到与标题“iRestaurant”相同的级别 编辑答案。立即尝试 现在,该按钮位于正确的位置,但是当我单击它时,它不像普通按钮那样闪烁/闪烁。我很困惑【参考方案2】:

引用自苹果关于 UIAppearance 协议的文档

当视图进入窗口时,ios 会应用外观更改,但它不会 更改已在窗口中的视图的外观。

因此,如果您设置 UIBarButtonItem 外观的代码位于 navigationItem 分配代码之后。它不会工作

【讨论】:

以上是关于在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 的 uiappearance 也会更改 UIBarButton 图像吗?

iOS:UIBarButton 正确大小

尝试在 ios 6 中将 uibarbutton 样式的相机添加到 uitableviewcell

UIbarbutton 蓝色而不是背景图片

iOS 在整个导航控制器中显示相同的 UIBarButton

如何减少 UINavigationBar IOS 7 中 UIBarButton 项之间的填充?