zoukankan      html  css  js  c++  java
  • iOS 中的frame,bounds,center,transform关联

    这里有一篇好文章 http://www.winddisk.com/2012/06/07/transform/

    先看几个知识点,UIView 的frame,bounds,center,transform属性,CAlayer的position,anchorPoint,transform.

    1.当一个view的frame被更改时

    a.当更改size时,它的bounds的width和height会被更改为与frame的size一致,但是bounds的origin不会被更改。view的center,layer的position可能会被更改。

    b.当更改origin时,对bounds属性无影响。view的center,layer的position可能会被更改。

    2.当一个view的bounds被更改时

    a.当更改size时,frame的width和size会改为同bounds的size一致,frame的origin有可能更改(取决于layer的anchorPoint)。view的center,layer的position可能会被更改不会更改。

    b。当更改origin时,frame无影响,view的center,layer的position不会更改。

    3.当view的center更改时

    frame的origin会更改,layer的position会更改。

    4.当一个view的transform被更改了,即不为CGAffineTransformIdentity。

    frame属性可能会更改,view的bounds,center不会变,layer的position不会变。这个很重要,这样保持了在transform后,view的frame虽然改变了,但是内部参考系是不变的,可以继续进行其他变换,只要不更改frame或center或layer的position。

    总结一下,对于一个view,要确定显示样式,最重要的有2个参数,一个是大小,一个是锚点。大小由size来反映;锚点由anchorPoint和position来反映,其中Position指的是锚点在父节点中的坐标值,而anchorPoint含有锚点在本节点中的相对位置。我的理解是,一个view想要确定位置和大小,首先需要position参数,之后根据archorPoint(作用就是确定position在view中的位置)和 size (图片大小)来绘制view。锚点是各种transform以及bounds的size变换的参考点。

  • 相关阅读:
    2020以去过半,写一下上半年的总结跟下半年的计划
    js实现浏览器打印功能
    看不见远程新建git分支
    Vue中导出Excel表格方法
    SVN命令使用详解
    IOS NSTimer 定时器用法总结
    静态库与动态库的区别?
    iOS 本地缓存实现 方案借鉴
    IOS开发中NSRunloop跟NSTimer的问题
    FMDB
  • 原文地址:https://www.cnblogs.com/breezemist/p/3457286.html
Copyright © 2011-2022 走看看