Tôi đã có thể thay đổi vị trí thẳng đứng của biểu tượng nút quay lại chứ không phải văn bản.Thay đổi vị trí dọc của văn bản nút quay lại trong UINavigationBar
Tôi đang sử dụng phương pháp layoutSubviews trong UINavigationBar:
- (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];
}
}
}
Vấn đề là bất kỳ sự thay đổi khung tôi thực hiện trên UINavigationItemButtonView dường như không có bất kỳ tác dụng, cũng không phải bất kỳ sự thay đổi khung tôi thực hiện trên nó UILabel subview đó là văn bản nút thực tế. Khi tôi đăng nhập các khung nhìn, các khung dường như đang thay đổi nhưng văn bản không di chuyển trong chế độ xem của tôi. Tôi đang làm gì sai?
Jack, bạn đã thử đặt mã đó trong 'viewDidAppear:' thay thế? Tôi đã thử nghiệm trên một dự án của tôi và nó thiết lập vị trí y. – carlodurso