使用drawRect模仿UILabel的方向改变行为

时间:2013-05-29 18:28:19

标签: ios cocoa-touch drawrect

出于性能原因(在我的子类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];
}

滚动现在要快得多,而且一切都很完美 - 几乎

问题是:当视图为其界面方向旋转动画设置动画时,文本显示为扭曲/拉伸。它在方向前后看起来很棒,但在动画期间

有没有办法阻止视图拉伸,并且基本上模仿UILabels旋转界面时的行为方式?

1 个答案:

答案 0 :(得分:2)

试试UIViewContentModeTopLeft。这就是我在我的应用程序中以相同的情况解决它的方式。这将阻止缩放。 (见https://stackoverflow.com/a/3456973/1445366)。