转换方法如下:
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view
基本上只会转换坐标位置,大小数据会保持不变。
这里需要特别说明的是fromView与toView的意义。
fromView是从目标坐标系转换到调用convertXXXX的视图坐标系。如果fromView为空的话,它的坐标将会使用整个窗口的坐标系,也可以理解成屏幕空间的坐标系。
toView是从调用convertXXXX的视图坐标系转换到目标坐标系。如果toView为空的话,它的坐标将会使用整个窗口的坐标系,也可以理解成屏幕空间的坐标系。
这个转换过程中如果从源到目标间有包含scrollview对象,它的内容偏移也会加入计算,所以转换不会漏掉偏移量。
在处理弹出键盘遮挡问题时转换是必要的,因为需要判断控件是否被弹出的键盘遮挡,而为了判断控件是否被键盘遮挡就需要转换控件的位置到屏幕空间的坐标系加以判断,从而调整视图以避免控件被挡住。