从drawRect()调整UIView的大小

时间:2012-07-07 04:59:17

标签: ios drawrect

我有一个UIView并从drawRect()绘制其内容,但我需要根据绘图期间完成的某些计算来调整视图的大小:

当我更改尺寸时,图纸接缝会缩放,而不是使用从调整大小中获得的额外尺寸。

我正在调整表单drawRect()

的大小
 CGRect limits = self.frame ;
 limits.size.width = 400;
 self.frame = limits;

它的接缝就像上下文不知道调整大小并使用旧尺寸绘制。调整大小后我已经尝试[self setNeedsDisplay]但是不再调用draw方法。

2 个答案:

答案 0 :(得分:1)

计算应该提前完成,而不是在绘图过程中,仅出于性能原因(尽管早期计算也可以避免这个问题)。

例如,如果您的计算取决于因素XYZ,请安排在X,{{1}发生更改时重做这些计算}或Y。如有必要,请缓存计算结果,并在此时调整视图框架的大小。 Z实现应仅绘制到它所给出的区域。

答案 1 :(得分:0)

任何与之斗争的人。

如果从drawRect :(或从drawRect :)调用的任何方法调用,显然[self setNeedsDisplay]将没有任何效果。为什么它只是跳过电话。

为了让事情发生,请改为使用

[self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0];

当主队列再次空闲时,这将被调用;只需确保在drawRect中使用一些条件来调用needsDisplay - 否则你将会被循环。