IOS开发中的坐标转换

作者: iiKris | 来源:发表于2016-07-19 23:44 被阅读637次

在平时的开发中, 我们经常会遇到一个控件的上面添加另一个控件的情况,这时如果需要获取该控件的子控件相对于目标视图的坐标值,通过坐标转换可以快速实现。

示例图片

苹果为我们提供了两个方法可以实现坐标的转换:

1.将控件由所在视图转换到目标视图中时,返回在目标视图中的坐标值

<pre>
<code>- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;</code>
</pre>
示例:
<pre>
<code>-CGRect newRect=[redView.superview convertRect:redView.frame toView:window];</code>
或者:
<code>-CGRect newRect=[redView convertRect:redView.bounds toView:window];</code>
</pre>

2. 将控件从目标视图中转换到当前视图中,返回在当前视图中的坐标值

<pre>
<code>- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;</code>
</pre>
示例:
<pre>
<code>-CGRect newRect=[window convertRect:redView.frame fromView:redView.superview];</code>
或者:
<code>-CGRect newRect=[window convertRect:redView.bounds fromView:redView];</code>
</pre>

注意:上面的转换涉及到frame和bounds的问题,切记:frame是相对于父控件而言的,而bounds是相对于自己本身而言的。

小结

以上方法是针对近期自学新浪微博项目的一点小小总结,行笔简陋,如有错误,望指正。

相关文章

网友评论

    本文标题:IOS开发中的坐标转换

    本文链接:https://www.haomeiwen.com/subject/jmcvjttx.html