在平时的开发中, 我们经常会遇到一个控件的上面添加另一个控件的情况,这时如果需要获取该控件的子控件相对于目标视图的坐标值,通过坐标转换可以快速实现。
示例图片苹果为我们提供了两个方法可以实现坐标的转换:
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是相对于自己本身而言的。
小结
以上方法是针对近期自学新浪微博项目的一点小小总结,行笔简陋,如有错误,望指正。
网友评论