Как сделать UILabel, которая корректирует текст в верхнем левом углу? - PullRequest
4 голосов
/ 17 мая 2010

По какой-то странной причине в iPhone OS 3.0 это не работает: я сделал большой полноэкранный UILabel с numberOfLines = 0 и baselineAdjustment = UIBaselineAdjustmentNone.

Отказ от показа текста в левом верхнем углу. Он всегда находится в центре ограничительной рамки, выровненной по левому краю.

В документации сказано:

UIBaselineAdjustmentNone Настроить текст относительно верхнего левого угла Ограничительная рамка. Это по умолчанию регулировка. Доступно в iPhone OS 2.0 и позже.

Возможно, ошибка в структуре? Я начал с блестящих новых этикеток, чтобы проверить это. Текст центрирован.

1 Ответ

10 голосов
/ 17 мая 2010

Реализация по умолчанию центрирует текст по вертикали и не учитывает свойство contentMode. Реализуйте drawTextInRect: в подклассе.

@implementation TopLeftLabel

-(void) drawTextInRect:(CGRect)inFrame {
    CGRect      draw = [self textRectForBounds:inFrame limitedToNumberOfLines:[self numberOfLines]];

    draw.origin = CGPointZero;

    [super drawTextInRect:draw];
}

@end

Свойство baselineAdjustment предназначено только для случаев, когда размер шрифта настраивается по ширине.

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