Mogłem zmienić pozycję pionową ikony przycisku Wstecz, ale nie tekst.Zmiana pozycji pionowej tekstu przycisku Wstecz w UINavigationBar
Używam metody layoutSubviews w 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];
}
}
}
Problemem jest to, że każda zmiana ramki robię na UINavigationItemButtonView wydaje się nie mieć żadnego wpływu, ani zmiana ramki robię na jego UILabel subview to jest faktyczny tekst przycisku. Podczas rejestrowania widoków ramki wydają się zmieniać, ale tekst nie porusza się w moim widoku. Co ja robię źle?
Jack, czy próbowałeś umieścić ten kod w 'viewDidAppear:' zamiast? Testowałem na moim projekcie i ustawiłem pozycję y. – carlodurso