iOS学习开发iOS开发技术分享iOS进阶指南

IOS开发中的坐标转换

2016-07-19  本文已影响637人  iiKris

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

示例图片

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

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是相对于自己本身而言的。

小结

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

上一篇下一篇

猜你喜欢

热点阅读