В моем приложении мне нужно отображать несколько окон одного и того же NIB одновременно, и оно будет закрываться / освобождаться по таймеру,
все работает нормально, кроме положения окна. Мое требование: оно должно отображать окно точно под предыдущим окном, я могу рассчитать источник для нового окна, если присутствует какое-либо окно с тем же 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;
}
Проблема в том, что, если предыдущее окно присутствует, оно рисует новую точку, немного ниже и в правой части существующего окна,
Есть ли какое-либо свойство, которое мне нужно установить, проблема в том, что если предыдущая позиция находится точно в верхнем правом углу, тогда оно рисует новое окно в противоположном углу.