美文网首页
关于DrawRect

关于DrawRect

作者: 好尼桑 | 来源:发表于2016-04-04 07:26 被阅读1040次

1.重绘

重绘操作仍然在drawRect方法中完成,但是苹果不建议直接调用drawRect方法,当然如果你强直直接调用此方法,当然是没有效果的。苹果要求我们调用UIView类中的setNeedsDisplay方法,则程序会自动调用drawRect方法进行重绘。(调用setNeedsDisplay会自动调用drawRect)

drawRect调是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给View(如果这些View draw的时候需要用到某些变量值).

2.注意的点

1.如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。

2.该方法在调用sizeThatFits后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。

3.通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。

4.直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect不能为0.

以上1,2推荐;而3,4不提倡

1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。如果在其他方法中获取将获取到一个invalidate的ref并且不能用于画图。drawRect:方法不能手动显示调用,必须通过调用setNeedsDisplay 或者 setNeedsDisplayInRect ,让系统自动调该方法。

2、若使用calayer绘图,只能在drawInContext: 中(类似鱼drawRect)绘制,或者在delegate中的相应方法绘制。同样也是调用setNeedDisplay等间接调用以上方法。

3、若要实时画图,不能使用gestureRecognizer,只能使用touchbegan等方法来掉用setNeedsDisplay实时刷新屏幕

3.注意的问题:

1.UIImageView的DrawRect方法是不会被调用的,也就是说你继承UIImageView的子控件在drawrect方法里绘制是不生效的,并且其上面的子控件也是不能DrawRect的。

相关文章

  • 关于drawRect

    由于�一直没有好好学习UIView的绘制流程,关于UIView的drawRect一直以来都有两个疑问:1 为什么只...

  • 关于DrawRect

    1.重绘 重绘操作仍然在drawRect方法中完成,但是苹果不建议直接调用drawRect方法,当然如果你强直直接...

  • 关于drawRect内存暴增

    关于drawRect内存暴增的总结,在新建的view里重写了- (void)drawRect:(CGRect)re...

  • CAShapeLayer和UIBezierPath

    CAShapeLayer CAShapeLayer 是CALayer 的子类。 DrawRect:DrawRect...

  • drawRect

    drawRect:方法 每次系统调用drawRect方法之前,都会给drawRect方法传递一个跟当前view相关...

  • 下划线样式的textField

    继承textField重写drawRect - (void)drawRect:(CGRect)rect { CGC...

  • CAShapeLayer仿进度条

    先看下简单效果 先简单的介绍下CAShapeLayer 关于CAShapeLayer和DrawRect的比较 贝塞...

  • 关于CAShapeLayer和DrawRect的比较

    DrawRect:DrawRect属于CoreGraphic框架,占用CPU,消耗性能大CAShapeLayer:...

  • 关于CAShapeLayer和DrawRect的比较

    DrawRect:DrawRect属于CoreGraphic框架,占用CPU,消耗性能大CAShapeLayer:...

  • 绘制Cell的分割线

    重写Cell中的drawRect - (void)drawRect:(CGRect)rect {CGContext...

网友评论

      本文标题:关于DrawRect

      本文链接:https://www.haomeiwen.com/subject/fgbulttx.html