调整尺寸的UIView
问题描述:
我有一个UIView和drawRect()
绘制它的内容,但我需要有时调整视图大小取决于一些计算是在拉丝过程中完成的:调整尺寸的UIView
当我改变大小,绘制接缝以缩放,而不是使用从调整大小获得的额外大小。
这是我如何调整形式drawRect()
CGRect limits = self.frame ;
limits.size.width = 400;
self.frame = limits;
它接缝像上下文不知道调整大小和使用旧规格的图纸。调整大小后我已经尝试[self setNeedsDisplay]
,但不再调用绘制方法。
答
计算应该提前完成,而不是在绘图过程中进行,因为单独的性能原因(尽管早期计算也会避免此问题)。
例如,如果你的计算取决于多种因素,X
,Y
和Z
,安排重做每当有变化X
,Y
或Z
这些计算。必要时缓存计算结果,并在此时调整视图框架大小。 drawRect:
实施应该只绘制到它给出的区域。
答
对于任何人都在挣扎。
显然[self setNeedsDisplay]如果从drawRect调用(或从drawRect调用的任何方法:)将不会产生任何效果。为什么它只是跳过电话。
使事情发生使用以下代替
[self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0];
将其称为权当主队列再次空闲;只要确保使用一些条件来调用drawRect中的needsDisplay条件 - 否则你将会循环。