gpt4 book ai didi

ios - 在 UINavigationBar 中更改后退按钮文本的垂直位置

转载 作者:可可西里 更新时间:2023-11-01 04:41:31 27 4
gpt4 key购买 nike

我已经能够更改后退按钮图标的垂直位置,但不能更改文本。

我在 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];
}
}
}

问题是我在 UINavigationItemButtonView 上所做的任何框架更改似乎都没有任何效果,我在它的 UILabel subview (即实际按钮文本)上所做的任何框架更改也没有。当我记录 View 时,框架似乎在变化,但文本在我的 View 中没有移动。我做错了什么?

最佳答案

您将 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];
}

并且您可以通过在 applicationDidFinished 中添加它来更改 backBarItem 的标题位置。

[[UIBarButtonItem appearanceWhenContainedIn:[MyNavigationBar class], nil] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, 8) forBarMetrics:UIBarMetricsDefault];

关于ios - 在 UINavigationBar 中更改后退按钮文本的垂直位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com