У меня есть UIView, в котором мне нужно рисовать текст в drawRect:
- (void)drawRect:(CGRect)rect {
...
[@"some text" drawAtPoint:somePoint withFont:someFont];
...
}
Поскольку текст требует специального форматирования, я не могу просто использовать UILabel.
Выглядит нормально, пока я не поверну устройство. Затем размер моего пользовательского UIView изменяется (в методе layoutSubviews
родительского представления), и текст растягивается в одном направлении и сжимается в другом.
Когда я заменяю свое представление на UILabel, текст всегда выглядит великолепно, даже когда границы представления меняются.
Как мне заставить мой взгляд проявлять то же поведение, что и UILabel?
Некоторые вещи, которые я изучил, но пока не достигли успеха:
- Установите для уровня представления представленияDisplayOnBoundsChange значение YES.
- Установить представление содержимого Stretch на CGRectZero.
- Вызовите setNeedsDisplay в макете моего представления Subviews.
Может быть, я не делаю одну из этих вещей правильно. Кто-нибудь еще сталкивался с этим?
Обновление: Как рекомендовано в ответе Джеймса Хаддлстона, я установил для свойства contentMode
представления UIViewContentModeRedraw
, что помогло мне в этом разобраться. Текст теперь отображается правильно в конце анимации. Однако в начале анимации текст сжимается / растягивается, чтобы соответствовать конечным размерам, а затем становится незакрепленным / растянутым в течение анимации. Это не относится к UILabel.