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

Changing vertical position of UIBarButtonItem on iOS 8.2

这是我的导航栏

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

这是我的代码

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

我试了一遍又一遍。好像不行

谁能建议我如何将按钮项 "Settings" 向下移动?

您可以轻松地将自定义按钮添加到 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 值,您可以更改按钮的原点

引用自 apple 关于 UIAppearance 协议的文档

iOS applies appearance changes when a view enters a window, it doesn’t change the appearance of a view that’s already in a window.

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