ConvertRect没有按预期工作

时间:2016-12-16 10:29:14

标签: ios swift uiview converter

我试图转换深度' Subview'框架到上层' UIView'。我在这里附加了视图层次结构。

附上插图:

enter image description here

我已经尝试了这个,但结果离开了屏幕:

let rect = smallSubview.convert(smallSubview.frame, to: bigSuperview)

我试图转换小型子视图' frame,to' VideoCrop' / bigSuperView坐标空间。有什么建议?谢谢!

1 个答案:

答案 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 :)而高度和宽度相同:)