Jac*_*ers 5 uinavigationbar uikit uinavigationcontroller ios
我已经能够改变后退按钮图标的垂直位置而不是文本.
我在UINavigationBar中使用layoutSubviews方法:
- (void)layoutSubviews {
[super layoutSubviews];
BOOL fixed = NO;
NSArray *classNamesToReposition = @[@"_UINavigationBarBackIndicatorView", @"UINavigationButton", @"UINavigationItemButtonView"];
for (UIView *view in [self subviews]) {
if ([classNamesToReposition containsObject:NSStringFromClass([view class])] && !fixed) {
CGRect frame = [view frame];
if ([NSStringFromClass([view class]) isEqualToString:@"_UINavigationBarBackIndicatorView"]) {
frame.origin.y = 14.5;
} else if ([NSStringFromClass([view class]) isEqualToString:@"UINavigationButton"]) {
frame.origin.y = 9.0;
} else if ([NSStringFromClass([view class]) isEqualToString:@"UINavigationItemButtonView"]) {
frame.origin.y = 5.0;
}
[view setFrame:frame];
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我在UINavigationItemButtonView上做的任何帧更改似乎都没有任何效果,也没有我在它的UILabel子视图上做的任何帧更改,这是实际的按钮文本.当我记录视图时,框架似乎正在改变,但文本在我的视图中没有移动.我究竟做错了什么?
您将 UINavigationBar 子类化为 MyNavigationBar,在layoutSubviews 中更改后退指示器位置。
for (UIView *view in [self subviews]) {
CGRect frame = [view frame];
if ([NSStringFromClass([view class]) isEqualToString:@"_UINavigationBarBackIndicatorView"]) {
frame.origin.y = 19.5; //default is 11.5, move down by 8.
}
[view setFrame:frame];
}
Run Code Online (Sandbox Code Playgroud)
您可以通过在 applicationDidFinished 中添加它来更改 backBarItem 的标题位置。
[[UIBarButtonItem appearanceWhenContainedIn:[MyNavigationBar class], nil] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, 8) forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1905 次 |
| 最近记录: |