我的旧代码使用了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];
}
不幸的是,我无法对此进行测试,替代的新方法似乎与旧方法有很大不同。如何转换?
最佳答案
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