Обрезать заголовок надписи в UINavigationBar в iOS 5 - PullRequest
7 голосов
/ 20 октября 2011

Используя iOS 5 SDK, я пишу приложение, которое использует собственный шрифт в виде сценария в своем экземпляре UINavigationBar.Проблема с этим шрифтом заключается в том, что, поскольку он находится в стиле сценария, его глифы превышают границы.Вы можете увидеть проблему в приложении здесь:

Example image on a device

Для более ясного примера, вы можете увидеть мой документ Photoshop здесь:

Photoshop example

Есть идеи, как мне решить эту проблему?Моим первым инстинктом было установить свойство clipsToBounds объекта UILabel в UINavigationBar, но, по-видимому, не существует одобренного Apple способа прямого доступа к этому объекту.Это мучило меня в течение некоторого времени, когда я использовал iOS 5 в бета-версии, поэтому, может быть, вы можете помочь сейчас, когда NDA поднялся.

Спасибо!

Ответы [ 4 ]

1 голос
/ 24 марта 2014

У меня была точно такая же проблема, и я не могу найти какие-либо недавние решения по этой теме.

Вот статья, которую я нашел, но с отличным объяснением проблемы: https://web.archive.org/web/20161228102731/http://tinymission.com/post/subclassing-uibutton

Автор этой статьи говорит:

Видите ли, Apple (или тот, кто разработал класс UIButton) решил автоматически рассчитать ширину надписи на кнопке на основе сообщенной ширины букв шрифта.... Проблема возникает в первую очередь с курсивом и курсивными шрифтами.... Способ, которым они вкладывают, заключается в том, что дизайнер шрифтов фактически рисует букву преднамеренно за ее расчетными границами.Это позволяет двум рукописным буквам соприкасаться и другим типам букв быть ближе друг к другу, чтобы буква типа «f» не выглядела ненормально далеко от буквы «t».

Надеюсь, это поможетлюбые будущие люди, которые сталкиваются с этим постом с той же проблемой!

1 голос
/ 09 апреля 2013

Вы можете использовать UINavigationItem titleView для установки UILabel с пользовательским шрифтом, а затем переопределить setTitle: для обновления своей пользовательской метки. При необходимости вы можете затем вызвать sizeToFit на метке или вручную обновить ее кадр после использования sizeWithFont: или любого другого NSString метода определения размера.

0 голосов
/ 05 мая 2012

Можете ли вы получить доступ к свойству clipToBounds или AdjusttsFontSizeToFitWidth UILabel?

В качестве альтернативы вы можете выбрать размер шрифта, который сделал плавник метки в представлении UILabel.Описание того, как отрегулировать размер шрифта для данного прямоугольника, доступно здесь:

Как отрегулировать размер шрифта надписи для соответствия прямоугольнику?

0 голосов
/ 20 октября 2011

Если вы используете контроллер навигации, вы можете установить titleView определенного UIViewController, который отображается.Этот вид заголовка может быть UIImageView с заголовком в качестве ресурса .png.

Например:

Внутри вашего UIViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
            self.navigationController.navigationItem.titleView = [[UIImageView alloc] initWithImage:@"yourheader.png"];
    }

    return self;
}

Вы можете немного поиграть сразмер изображения, чтобы оно подходило по размеру.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...