在 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 分配代码之后。不行
这是我的导航栏
我在更改导航栏上设置 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 分配代码之后。不行