博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
视图间坐标转换
阅读量:6426 次
发布时间:2019-06-23

本文共 1083 字,大约阅读时间需要 3 分钟。

一、方法

- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;

- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;

- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;

- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

 

二、理解

例子1:[V1 convertPoint:point toView:V2] == [V2 convertPoint:point fromView:V1]

例子2:[aView convertPoint:p toView:anotherView]

将p『相对aView的坐标』转换为『相对anotherView的坐标』

比如说aView是原点(0,0),anotherView是aView的子视图,原点是(100, 0)

那么一个在anotherView中坐标是(0, 0)的点经过转换后在aView的坐标是(100, 0)

 

三、注意 

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来处理的,但是并不确定。 
   所以一定要小心。

转载于:https://www.cnblogs.com/chenyuansheng/p/5324736.html

你可能感兴趣的文章
Swift 中 Substrings 与 String
查看>>
作为一个开源软件的作者是一种什么样的感受?
查看>>
移动端适配知识你到底知多少
查看>>
TiDB 在 G7 的实践和未来
查看>>
重新认识javascript对象(三)——原型及原型链
查看>>
小学生学“数学”
查看>>
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>
Nginx限制带宽
查看>>
All Web Application Attack Techniques
查看>>
归档日志ORA-19809: 超出了恢复文件数的限制
查看>>
精品德国软件 UltraShredder 文件粉碎机
查看>>
PANDAS 数据合并与重塑(join/merge篇)
查看>>
文件时间信息在测试中的应用
查看>>
直播疑难杂症排查(8)— 播放杂音、噪音、回声问题
查看>>