2015-11-28 56 views
0

我的舊代碼使用了現在不推薦使用的convertBaseToScreen。雖然由於刪除了功能,我不再在應用程序中使用此代碼,但是我想知道主要舊代碼是否應該計劃將此功能恢復原樣,是否有任何幫助我改變代碼的幫助人員?convertBaseToScreen方法現在不推薦使用

- (void) updateAdWindow 
{ 
    NSPoint origin = [window convertBaseToScreen:NSMakePoint((window.frame.size.width - adWindow.frame.size.width)/2, 0)]; 
    origin.y -= adWindow.frame.size.height; 

    if(closed) 
     [adWindow setFrame:NSMakeRect(origin.x, origin.y, WIN_SIZE_WIDTH, 0) display:TRUE]; 
    else 
     [adWindow setFrame:NSMakeRect(origin.x, origin.y, adWindow.frame.size.width, adWindow.frame.size.height) display:TRUE]; 
} 

我不能測試這個不幸的是,替換新方法似乎與舊的不同。如何轉換?

+0

將convertPointToBacking或convertPoint:toView:工作? – DDP

+0

我不太確定,因爲我無法測試它,我希望有人可能已經完成了這個代碼的幫助。 – user2085689

回答

0

蘋果的文件說:

使用convertRectToScreen:代替。

轉換window.frame並使用結果來計算原點。

1

的NSWindow方法:convertRectToScreen:沒有與convertBaseToScreen兼容的簽名:所以它可能會有所幫助使用下面的NSWindow類中的方法:

@implementation NSWindow (ExileTriage) 

- (NSPoint) convertPointToScreen:(NSPoint)point 
{ 
    NSRect convertRect = [self convertRectToScreen:NSMakeRect(point.x, point.y, 0.0, 0.0)]; 
    return NSMakePoint(convertRect.origin.x, convertRect.origin.y); 
} 

@end 
相關問題