我有一个UIView并从drawRect()
绘制其内容,但我需要根据绘图期间完成的某些计算来调整视图的大小:
当我更改尺寸时,图纸接缝会缩放,而不是使用从调整大小中获得的额外尺寸。
我正在调整表单drawRect()
CGRect limits = self.frame ;
limits.size.width = 400;
self.frame = limits;
它的接缝就像上下文不知道调整大小并使用旧尺寸绘制。调整大小后我已经尝试[self setNeedsDisplay]
但是不再调用draw方法。
答案 0 :(得分:1)
计算应该提前完成,而不是在绘图过程中,仅出于性能原因(尽管早期计算也可以避免这个问题)。
例如,如果您的计算取决于因素X
,Y
和Z
,请安排在X
,{{1}发生更改时重做这些计算}或Y
。如有必要,请缓存计算结果,并在此时调整视图框架的大小。 Z
实现应仅绘制到它所给出的区域。
答案 1 :(得分:0)
任何与之斗争的人。
如果从drawRect :(或从drawRect :)调用的任何方法调用,显然[self setNeedsDisplay]将没有任何效果。为什么它只是跳过电话。
为了让事情发生,请改为使用
[self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0];
当主队列再次空闲时,这将被调用;只需确保在drawRect中使用一些条件来调用needsDisplay - 否则你将会被循环。