我试图转换深度' Subview'框架到上层' UIView'。我在这里附加了视图层次结构。
附上插图:
我已经尝试了这个,但结果离开了屏幕:
let rect = smallSubview.convert(smallSubview.frame, to: bigSuperview)
我试图转换小型子视图' frame,to' VideoCrop' / bigSuperView坐标空间。有什么建议?谢谢!
答案 0 :(得分:6)
不确定,但是你不应该考虑边界而不是你的smallSubView框架吗?
我的意思是:
let rect = smallSubview.convert(smallSubview.bounds, to: bigSuperview)
修改强>
我无法在回答中回答你的评论,因此更新我的答案:)
转换API的快速视图建议
func convert(_ rect:CGRect,查看:UIView?) - > CGRect描述
将矩形从接收器的坐标系转换为 另一种观点。参数
rect在本地指定的矩形 接收器的坐标系(边界)。
view视图是 转换操作的目标。如果view为nil,则此方法 而是转换为窗口基坐标。否则,视图和 接收者必须属于同一个UIWindow对象。
因为它表明你应该考虑边界而不是框架:)
框架和边界之间的区别是什么?
Bounds:指定视图在其自己的坐标系中的位置和大小。 框架:虽然这指定了其superViews坐标系中视图的位置和大小:)
因此,任何视图的边界都将其原点为(0,0),其中框架的x和y相对于其superview :)而高度和宽度相同:)