Одна и та же команда, разные результаты setFrame: NSView - PullRequest
0 голосов
/ 09 февраля 2012

Я испытываю очень странную проблему.

Прежде всего, мое приложение перемещает элементы пользовательского интерфейса по экрану с помощью следующей команды:

    [view setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0))]; 

Я даю своим пользователям возможность изменить размер NSWindow приложения до другого размера с помощью этой команды:

    [self.window setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0)) display:YES animate:YES];

В «режиме изменения размера» я, очевидно, меняю каждую отдельную команду setFrame на соответствующую систему координат.

Однако существует проблема: когда (если) пользователь переключается на исходный размер NSWindow, снова нажимая кнопку, и приложение снова выполняет перемещения пользовательского интерфейса, перемещаемые представления не находятся в том месте они должны быть внутри.

Для пояснения: мой код движения пользовательского интерфейса работает отлично, снова и снова, либо в обычном режиме, либо в режиме изменения размера. Однако, если я переключаюсь с одного на другое, некоторые элементы (не все) сдвигаются.

Что может быть причиной этого странного поведения? Я использую те же самые точные команды (в пределах каждого разрешения экрана), и NSLogs подтверждают, что элементы пользовательского интерфейса находятся в месте, которое я указал; однако это местоположение явно не то, к которому я пытаюсь перейти.

Кто-нибудь сталкивался с подобной проблемой здесь?

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Возможно, вы установили маску авторазмера в Интерфейсном Разработчике, которая мешает вашим местам размещения вручную.Войдите в свое перо и удалите все пружины и распорки в Инспекторе размера.Хотя, если возможно, вы должны позволить автоматическому изменению размера управлять размещением или перейти к Auto Layout, который был представлен в 10.7.

0 голосов
/ 18 февраля 2012

После нескольких дней и дней попыток выяснить это, я пришел к следующему выводу: код изменения размера просто не работал.

Я подтвердил это с помощью NSLog после изменения размера моего окна.В конце я изменил свой код изменения размера, добавив следующую строку после традиционного метода setFrame::

    [self.window setContentSize:NSSizeFromCGSize(CGSizeMake(desiredWidth, desiredHeight))];
...