Ios 模拟UILabel';使用drawRect的s方向更改行为

Ios 模拟UILabel';使用drawRect的s方向更改行为,ios,cocoa-touch,drawrect,Ios,Cocoa Touch,Drawrect,出于性能原因(在我的子类UITableViewCell),我尝试直接使用drawRect绘制文本,而不是添加UILabel子视图 为了在方向改变时重新绘制文本,我将视图的contentMode设置为UIViewContentModeRedraw: - (id)initWithFrame(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setContentMode:UIView

出于性能原因(在我的子类
UITableViewCell
),我尝试直接使用
drawRect
绘制文本,而不是添加
UILabel
子视图

为了在方向改变时重新绘制文本,我将视图的
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];
}
现在滚动速度快多了,而且一切都很完美——几乎可以

问题是:当视图为其界面方向旋转动画设置动画时,文本显示为扭曲/拉伸。它在定向前后看起来都很不错,但在动画过程中却不稳定


是否有任何方法可以防止视图拉伸,并且基本上模仿UI标签在旋转界面时的行为方式?

请尝试
UIViewContentModeTopLeft
。这就是我在我的应用程序中在相同情况下解决问题的方法。这将防止缩放。(请参阅)。

很有趣!(为了让这种方法发挥作用,我必须调用
setNeedsDisplay
inside
WillAnimateRotationInterfaceOrientation
)它变得非常接近:文本本身不再拉伸,动画与UILabel类似。但现在整个视图也以这种方式设置动画。这不是非常明显,但视图的帧不再平滑地设置动画。是的,这是使用
drawRect
解决此问题的缺点之一-您不能为每个单独的
contentMode