convertPoint本身并不難理解惠毁,但是下面的這些特殊情況一定要注意犹芹,經(jīng)過測試,總結(jié)如下:
UIView* fromView = [[UIView alloc] init];
[fromView convertPoint:aPoint toView:toView];
就是將fromView坐標(biāo)系中的一個點轉(zhuǎn)換為toView中的一個點鞠绰。
這時需要注意:
1腰埂、如fromView是nil,則返回CGrectZero蜈膨。
這種情況發(fā)生在view的init方法中; [self.superView convertPoint:aPoint toView:toView];
此時的self.superView是nil屿笼。
2、如果toView是nil則相當(dāng)于:[fromView convertPoint:aPoint toView:selfView.window];
所以如果要將坐標(biāo)轉(zhuǎn)為相對于窗口的坐標(biāo)丈挟,則只要如下就可以了:
[fromView convertPoint:aPoint toView:nil];
3刁卜、fromView和toView還沒有放到一個view中去,也就是沒有對它們執(zhí)行addSubview方法曙咽,此時它們的superView是nil。這種情況一定要小心了挑辆,
盡量不要這么作例朱,因為view還沒有建立明確的相對坐標(biāo)系,這時cocoa框架一定很抓狂鱼蝉,作了很多假設(shè)洒嗤,一般是以創(chuàng)建fromView和toView的那個view作為superView來處理的,但是并不確定魁亦。
所以一定要小心.