美文网首页
bounds和frame的区别

bounds和frame的区别

作者: iOS_恒仔 | 来源:发表于2016-04-17 09:15 被阅读123次
    frame:以父控件左上角为原点
    bounds:以自己的左上角为原点,bounds x,y永远为0(这是错误的认识)
    
    frame和bounds都是用来描述一块区域
    frame:描述可视范围,也就是说从左上角的0,0点开始延伸,它延伸的区域就是我们的可视范围
    
    bounds:描述可视范围在内容的区域,所有的子控件都有内容,它就类似于空气,是看不到的,正常情
                    况下,内容是无限大的,所有的子控件其实都是放在内容上的,在可视范围内的内容我们才能
                    看见,所以正常情况下,内容的左上角(bounds)与可视范围(frame)的左上角是重合的,当修
                    改bounds的x与y都会导致子控件跟着移动.需要注意的是,可视范围(frame)是永远不会变的,它是相对父控件的.
    
    所有的子控件都是相对于内容
    bounds:修改内容原点
    
    相对性:可视范围相对于父控件位置永远不变
              可视范围相对于内容,位置改变
    

    如下图举例:


    bounds.png

    默认情况下,可视范围(frame)的原点与内容(bounds)的原点是重合的.所以加在内容左上角的开关能看到,因为也在可视范围内,当此时修改内容的原点,也就是bounds的y值,如y += 10,由于可视范围是不变的,这时内容的原点就会变化,y += 10,那么内容原点就会往上移10,此时内容上的控件(本例中指开关)也会跟着
    内容原点一起上移.

    总结:contentOffset(偏移量)的值和bounds的origin值是一样的,偏移量往可视范围外偏移是正数,往可视范围里面偏移是负数,可视范围指的是控件的frame

    相关文章

      网友评论

          本文标题:bounds和frame的区别

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