convertRect: fromView:和convertRe

2021-10-28  本文已影响0人  IMKel

需求(常见于处理键盘遮挡问题)

已知一个view的frame,想知道在另一个view上,这个frame是多少?

或者说

已知self.view的子view的frame值,想知道这个frame值对应到keywindow上是多少?

上面两句话描述着同一个需求,处理这个需求可以这么做,代码如下:

CGRect <对应到另一个view上的frame> = 
[<另一个view> convertRect:<已知一个view的frame> fromView:<已知的view>];

//实际例子
CGRect frame = 
[[UIApplication sharedApplication].keyWindow convertRect:self.textField.frame fromView:self.textField.superview];

理解了上面这个方法,等同于理解了
convertRect: toView:
convertPoint:toView:
convertPoint:fromView:
这3个方法。

例如:上面代码等价于下面代码

CGRect <对应到另一个view上的frame值> 
= [<已知的view> convertRect:<已知view的一个frame值> toView:<对应到另一个view上>];

CGRect frame = 
[self.textField.superview convertRect:self.textField.frame toView:[UIApplication sharedApplication].keyWindow];

另外两个convertPoint方法就不举例了,看到这我相信你应该懂了~

上一篇 下一篇

猜你喜欢

热点阅读