2

すべての画面にウィンドウのコピーを表示しようとしています。以下の私のコードを参照してください。メイン画面にフチなしウィンドウが正しく表示されるだけです。他のウィンドウはどこにも表示されません。

ウィンドウには、左側から200ピクセル、上面から200ピクセルが表示されるはずです。

origin.xを画面の高さ-300(= 200pxの間隔+ウィンドウ自体の100pxの高さ)に設定しました。

私が間違っていることについて何か考えはありますか?

- (void)displayOnAllScreens
{        
    NSArray *screenArray = [NSScreen screens];

    _tempWindows = [[NSMutableArray alloc] init];

    if ([screenArray count] == 1) {
        [self displayOnScreen:[NSScreen mainScreen]];
    } else {
        for (int i=0; i<[screenArray count]; i++) {
            [self displayOnScreen:[screenArray objectAtIndex:i]];
        }
    }
}

- (void)displayOnScreen:(NSScreen *)screen
{
    BOOL isMainScreen = NO;

    if (screen == [NSScreen mainScreen]) {
        isMainScreen = YES;
    }

    NSRect screenRect = [screen frame];

    NSRect frame = NSMakeRect(screenRect.origin.x + 200, screenRect.size.height - 300, 100, 100);

    NSWindow *_tempWindow;

    _tempWindow  = [[NSWindow alloc] initWithContentRect:frame
                                                     styleMask:NSBorderlessWindowMask
                                                       backing:NSBackingStoreBuffered
                                                         defer:NO];

    if (isMainScreen) {
        [_tempWindow setBackgroundColor:[NSColor lightGrayColor]];
    } else {
        [_tempWindow setBackgroundColor:[NSColor redColor]];
    }
       [_tempWindow makeKeyAndOrderFront:NSApp];
    [_tempWindow setAlphaValue:0.93];

    [_tempWindow setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];

    [_tempWindows addObject:_tempWindow];
 }
4

1 に答える 1

2

NSWindowには、どの画面を表示するかを指定するための特別な初期化子があります(実際には、パラメーターが1つだけオフになっています!)。

initWithContentRect:styleMask:backing:defer:screen:

イニシャライザのもう1つの形式はメイン画面を想定しているため、そのように積み上げられていました。

于 2013-03-05T14:05:21.260 に答える