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