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
insideWillAnimateRotationInterfaceOrientation
)它变得非常接近:文本本身不再拉伸,动画与UILabel类似。但现在整个视图也以这种方式设置动画。这不是非常明显,但视图的帧不再平滑地设置动画。是的,这是使用drawRect
解决此问题的缺点之一-您不能为每个单独的contentMode
。