UIView的layoutSubviews和drawRect
UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是 异步 执行的。setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。 综上两个方法都是异步执行的, layoutSubviews方便数据计算,drawRect方便视图重绘 。 先大概看下ios layout机制相关的这几个方法: - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ——————- - (void)layoutSubviews - (void)layoutIfNeeded - (void)setNeedsLayout ——————– - (void)setNeedsDisplay - (void)drawRect 一、 layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews。 2、addSubview会触发layoutSubviews。 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。 4