내 응용 프로그램에서 한 번에 같은 NIB의 여러 창을 표시해야하며 타이머 기준으로 닫히거나 해제됩니다.NSWindow setFrame | 화면의 setPosition
창 위치를 제외한 모든 것이 정상적으로 작동합니다. . 내 요구 사항은 정확히 이전 창 아래에 창을 표시해야합니다, 같은 NIB의 모든 창이 존재하는 경우 새 창에 대한 원점을 계산할 수 있어요.
나는 원점을 얻기 위해이 기능을 사용하고 있습니다 : 이전 창으로가있는 경우는 약간 아래에 기존 윈도우의 오른쪽을 향해, 새로운 포인트를 그리는 경우
-(void)awakeFromNib{
NSString *eventMsg = [NSString stringWithFormat:@"%s is set “,eventName];
[pTextField setStringValue:eventMsg];
[pWindow setFrameOrigin:[self pointstoDisplayScreen]];
/* On timer callback , i will show the fadeout and fadein effects*/
[self startTimer];
}
/* This method returns the coordinate where to
draw the window
*/
-(NSPoint)pointstoDisplayScreen{
NSRect frame = [[NSScreen mainScreen] visibleFrame];
NSRect windowRect = [pWindow frame];
CGFloat yCoordinate = frame.size.height-windowRect.size.height;
NSPoint point = NSMakePoint(frame.size.width - windowRect.size.width, frame.size.height-windowRect.size.height);
/* Let there be some gap, if any window present and let it draw below to
the existing window
*/
point.y -= (windowRect.size.height + windowOffset)*noOfWindow;
NSLog([NSString stringWithFormat:@"PositionToDisplayScreen x = [%f] y = [%f]",point.x,point.y ]);
return point;
}
문제는이다
내가 필요한 속성이 있습니까, 문제는 이전 위치가 정확히 오른쪽 상단에있는 경우 반대 구석에 새 창을 그립니다.
[NSWindowController setShouldCascadeWindows : NO] 이것은 내가 뭘 찾고 있었는지, 고마워. – Amitg2k12