ConvertRect无法按预期工作

Roi*_*lia 1 converter uiview ios swift

我正在尝试将深层'Subview'框架转换为上层'UIView'.我在这里附加了视图层次结构.

附图:

在此输入图像描述

我试过这个,但结果离开了屏幕:

let rect = smallSubview.convert(smallSubview.frame, to: bigSuperview)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将小的"Subview"框架转换为"VideoCrop"/ bigSuperView坐标空间.有什么建议?谢谢!

San*_*ari 8

不确定,但是你不应该考虑边界而不是你的smallSubView框架吗?

我的意思是 :

let rect = smallSubview.convert(smallSubview.bounds, to: bigSuperview)
Run Code Online (Sandbox Code Playgroud)

编辑

我无法回答你的评论,因此更新我的答案:)

转换API的快速视图建议

func convert(_ rect:CGRect,to view:UIView?) - > CGRect说明
将矩形从接收器的坐标系转换为另一个视图的坐标系.

参数

rect在接收器的本地坐标系(边界)中指定的矩形.

view作为转换操作目标的视图.如果view为nil,则此方法将转换为窗口基坐标.否则,视图和接收器都必须属于同一个UIWindow对象.

因为它表明你应该考虑边界而不是框架:)

什么是框架和界限之间的区别呢?

边界:指定视图在其自己的坐标系中的位置和大小.框架:虽然这指定了其superViews坐标系中视图的位置和大小:)

因此任何视图的边界都将其原点为(0,0),其中框架的x和y相对于其superview :)而高度和宽度相同:)