UINavigationItem # titleView проблемы с выравниванием - PullRequest
5 голосов
/ 08 июня 2011

Я нахожу мало информации об использовании 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), кажется, помогает Без этого взлома текст выравнивается по нижней части спусков по центру панели навигации.

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

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 августа 2012

Если вы развертываете на iOS 5+, вы можете проверить свойство titleVerticalPositionAdjustmentForBarMetrics в документации UINavigationBar :

- (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics
Returns the title’s vertical position adjustment for given bar metrics.

Также вам следует проверить titleTextAttributes (также iOS5 +), который вы можете использовать для установки собственного шрифта:

NSDictionary *attributes = @{
    UITextAttributeFont: yourFont
};
[navBar setTitleTextAttributes:attributes];

Если вы используете НЕ на iOS5, я бы предложил заключить UILabel вUIView и вместо этого установите UIView на titleView (это позволит вам дополнительно отрегулировать положение обернутой этикетки, изменив ее frame).

Если у вас есть доступ к видео WWDC 2012 (т.е. если выУ меня есть учетная запись разработчика), я настоятельно рекомендую посмотреть выступление по Расширенная настройка внешнего вида на iOS (этот материал включен в комплект).

Надеюсь, что это поможет.

0 голосов
/ 12 августа 2012

У меня была такая же проблема при использовании Grotesque, и @kolyuchiy здесь было отличное решение SO.(Это включает в себя загрузку утилит командной строки Apple Font Tool Suite и настройку атрибута ascender для вашего собственного шрифта).

...