美文网首页
iOS drawRect、initWithFrame、init、

iOS drawRect、initWithFrame、init、

作者: 混不吝丶 | 来源:发表于2016-12-18 18:02 被阅读455次

前言
最近在研究关于Quart2D方面的知识,通过在drawRect方法内可以对一个视图进行绘制并呈现出我们所想要的图形,在drawRect方法内一般都是通过rect的传参来确定我们的绘制区域,但在现在的开发过程中,基于fram来确定视图的位置的方式已经很少使用,大都使用mansory和AutoLayout来确定视图的fram,所以在自定一个view的时候需要拿到视图的准确的fram来进行绘制,当然这也就涉及到了真实的fram到底在哪里可以准确的拿到的问题

好了,进入正题

  • 方式1 通过initwithFrame方式创建视图


    111.png
222.png

通过initWithFrame方式创建的视图的调用方式是
1 : setFrame
2:initWithFrame
3:layoutSubviews
4:drawRect

  • 方式2 通过alloc init方式创建视图
465.png 3333.png

通过alloc init方式创建的调用方式是
1 setFrame
2 init
3 应为我在外面设置了fram所以这里再次调用setFrame
4 layoutSubviews
5 drawRect

结语
如果使用了AutoLayout或者mansory等 ,主动调用updateConstraintsIfNeeded 获取的frame是不真实的,如果需要得到自定义的view的frame可以在layoutSubViews里面获取到,如果需要得到UIController内的view的frame 可以在viewDidLayoutSubviews方法中遍历self.View的subViews获取到view的真实frame,作者这里是想在drawRect方法中绘制视图,所以将一个UIView的创建和调用API的顺序理了一下。

相关文章

  • iOS drawRect、initWithFrame、init、

    前言最近在研究关于Quart2D方面的知识,通过在drawRect方法内可以对一个视图进行绘制并呈现出我们所想要的...

  • init initWithFrame问题

    MyView *myView =[[MyView alloc]init]; 代码调用过程如下: 动态查找到 MyV...

  • init还是initWithFrame?

    当年学iOS的时候,有好多的知识点是知其然不知其所以然,随着时间的推移和开发的深入,很多当时不懂或者不是很懂的知识...

  • View的初始化函数

    ShopView类 init 方法内部会调用initWithFrame:方法 打印结果 initWithFrame...

  • 控制器生命周期

    1 init函数(init;initWithFrame;initWithCoder;等)--初始化 2 awake...

  • init:、initWithFrame: 调用选择

    前段时间准备面试时,突然被问到一个问题:init: 和 initWithFrame: 方法应该调用哪个?为什么? ...

  • UI-2

    172.简述视图控制器的生命周期。 1)init函数(init;initWithFrame;initWithCod...

  • iOS 自定义View 的总结注意

    参考连接 搜先自定义一个view 然后分别用 init 和 initWithFrame 来实现 init init...

  • IOS视图控制器的生命周期

    所谓的生命周期,也就是几个函数的调用顺序: 1, init函数(init;initWithFrame;initWi...

  • OC中init、initWithFrame、initWithCo

    假定我们需要自定义一个View,命名为MyView,当我们需要使用它当使用,一般情况下我们可以手写代码创建或者从X...

网友评论

      本文标题:iOS drawRect、initWithFrame、init、

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