2013-06-24 3 views
1

Я пытаюсь изменить размер NSWindow до определенного размера:Изменение размера NSWindow за доке

NSRect frame = [_window frame]; 

frame.size.width = 1024; 
frame.size.height = 768 + 42; // add 42 for window frame 

[_window setFrame: frame display: YES]; 
[_window center]; 

скорректированная высота всегда обрезается в доке приложений Mac OS X, так в моем случае вид внутри высоты окна не будет 768, а 680. Есть ли способ заставить его изменить размер за пределами дока?

+0

Это стандартное поведение OS X. Спросите себя, почему вам нужно переопределить это. Пользователи выполняют следующие действия, когда они хотят нормально: нажмите «док», скройте док-станцию, введите полный экран – uchuugaka

ответ

2

Fixed его реализация подкласса переопределить constrainFrameRect:toScreen:

- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen 
{ 
    return frameRect; 
} 

из библиотеки для разработчиков Mac, NSWindow Class Reference, constrainFrameRect: toScreen:

Если окно изменяемое и высота окна больше, чем высота экрана, высота прямоугольника регулируется так же, как и на экране. Ширина и горизонтальное расположение прямоугольника не изменяется. Вам не нужно вызывать этот метод самостоятельно; он вызывается автоматически (и измененный фрейм используется для определения местоположения и установки размера окна) всякий раз, когда под названием «Объект NSWindow» помещается на экран и всякий раз, когда его размер изменяется. Подклассы могут переопределять этот метод, чтобы предотвратить ограничение их экземплярами или ограничить их по-разному.

Смежные вопросы