• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

iOS view的frame和bounds之区别是什么

iOS view的frame和bounds之区别是:1、Frame是UIView在其父视图坐标系中的位置和大小;2、Bounds是UIView在其自身坐标系中的位置和大小。Frame用于描述视图在其父视图坐标系中的位置和大小,可以改变视图的位置和大小,其原点是相对于父视图的坐标系的。Bounds用于描述视图在其自身坐标系中的位置和大小,用于改变视图的坐标系大小,其原点通常为(0, 0)。

一、Frame

  • Frame是UIView在其父视图坐标系中的位置和大小。它是一个CGRect类型的结构体,包含了视图的原点坐标和宽高信息。
  • 当我们改变一个视图的frame时,实际上是在修改它在父视图中的位置和大小,因此会影响到它的位置和显示。
  • Frame的原点是相对于父视图的坐标系的,因此当父视图发生移动或变换时,子视图的frame也会相应地发生改变。

二、Bounds

  • Bounds是UIView在其自身坐标系中的位置和大小。它也是一个CGRect类型的结构体,通常情况下,它的原点都是(0, 0)。
  • 当我们改变一个视图的bounds时,实际上是在修改它自身坐标系的大小,而不会影响到视图在父视图中的位置和显示。
  • Bounds的宽高是相对于视图自身的,因此当视图发生缩放时,它的子视图的bounds不会发生改变。

三、区别总结

  • Frame用于描述视图在其父视图坐标系中的位置和大小,可以改变视图的位置和大小,其原点是相对于父视图的坐标系的。
  • Bounds用于描述视图在其自身坐标系中的位置和大小,用于改变视图的坐标系大小,其原点通常为(0, 0)。

延伸阅读

坐标系转换

在iOS开发中,由于UIView的Frame和Bounds属性描述了视图在不同坐标系中的位置和大小,所以涉及到坐标系转换是很常见的。

UIView提供了多种方法用于坐标系转换,如convertPoint:toView:convertPoint:fromView:用于点的转换,convertRect:toView:convertRect:fromView:用于矩形区域的转换等。

坐标系转换在处理视图嵌套、触摸事件处理等场景中非常有用,可以帮助我们准确地获取和设置视图在不同坐标系中的位置和大小。

相关文章