Проблемы с выравниванием UINavigationItem # titleView

Я нахожу мало информации об использовании UINavigationItem # titleView с пользовательским шрифтом. Когда я это сделал, шрифт на панели навигации смещен по вертикали.

Эта запись частично предназначена для документирования взлома, а также для надежды, что у кого-то есть краткий ответ на эту проблему, так как я чувствую, что упускаю что-то простое.

Сначала взлом с использованием моего собственного производного класса от UILabel:

@interface NavigationItemLabel : UILabel
- (void)setFrame:(CGRect)frame;
@end

@implementation NavigationItemLabel
- (void)setFrame:(CGRect)frame {
    // Called by UINavigationBar layoutSubviews.
    frame.origin.y -= self.font.descender;
}
@end

По какой-то причине frame.origin.y == -11, независимо от того, какой шрифт я использую. У кого-нибудь есть какая-нибудь интуиция относительно того, почему это так?

Кажется, мне помогает добавление элемента управления моего шрифта (пользовательский шрифт Gabriola). Без этой уловки текст будет выровнен по нижней части подстрочных элементов в центре панели навигации.

Это работает не для всех шрифтов.

Есть ли у кого-нибудь лучшее решение?

Спасибо.

5
задан emp 8 June 2011 в 19:52
поделиться