1
模仿UILabel的方向變化行爲由於性能方面的原因(在我的子類UITableViewCell
中),我正在試驗直接使用drawRect
繪製文本,而不是添加UILabel
子視圖。使用drawRect
而且爲了讓文字在方向改變重繪,我設置視圖的contentMode
到UIViewContentModeRedraw
:
- (id)initWithFrame(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setContentMode:UIViewContentModeRedraw];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[@"foo" drawInRect:CGRectInset(rect, 10, 10)
withFont:[UIFont systemFontOfSize:14]
lineBreakMode:NSLineBreakByWordWrapping];
}
滾動的速度要快得多,現在,這一切完美的作品– 幾乎。
問題是:在視圖動畫化其接口方向旋轉動畫時,文本出現扭曲/拉伸。它在取向前後看起來不錯,但在期間動搖了。
有什麼辦法可以防止視圖拉伸,基本上模仿UILabel在接口旋轉時的行爲方式嗎?
有趣! (爲了使這種方法起作用,我必須在'willAnimateRotationToInterfaceOrientation'內調用'setNeedsDisplay')。它變得非常接近:文本本身不再伸展,並且與UILabel類似地進行動畫處理。但是現在*整個視圖*也是這樣動畫的。它不是非常明顯,但*視圖的*框架不再平滑動畫。 – Emmett
是的,這是使用'drawRect'解決這個問題的缺點之一 - 你不能給每個單獨的項目一個單獨的'contentMode'。 –