convertPoint

convertPoint本身并不难理解,但是下面的这些特殊情况一定要注意,经过测试,总结如下:

UIView* fromView = [[UIView alloc] init];
[fromView convertPoint:aPoint toView:toView];
就是将fromView坐标系中的一个点转换为toView中的一个点。

这时需要注意:
1、如fromView是nil,则返回CGrectZero。
这种情况发生在view的init方法中; [self.superView convertPoint:aPoint toView:toView];
此时的self.superView是nil。
2、如果toView是nil则相当于:[fromView convertPoint:aPoint toView:selfView.window];
所以如果要将坐标转为相对于窗口的坐标,则只要如下就可以了:
[fromView convertPoint:aPoint toView:nil];

3、fromView和toView还没有放到一个view中去,也就是没有对它们执行addSubview方法,此时它们的superView是nil。这种情况一定要小心了,
尽量不要这么作,因为view还没有建立明确的相对坐标系,这时cocoa框架一定很抓狂,作了很多假设,一般是以创建fromView和toView的那个view作为superView来处理的,但是并不确定。
所以一定要小心.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容