convertBaseToScreen方法现已弃用

时间:2015-11-28 03:55:43

标签: objective-c macos cocoa

我的旧代码使用convertBaseToScreen,现已弃用。虽然由于删除了功能,我不再在我的应用程序中使用此代码,但我想知道主要的旧代码我是否应该计划重新启用此功能,无论如何,我可以在这里找到有用的人来帮助更改代码吗? / p>

- (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];
}

我不能不幸地测试这个,并且替换新方法看起来与旧方法有很大不同。如何转换?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Apple的文档说:

  

使用convertRectToScreen:改为。

转换window.frame并使用结果来计算原点。