Перевернутые проблемы с NSScrollView

У меня есть NSScrollView, который должен отображать в нем переменное количество NSView. Я сделал настраиваемый NSView, который isFlipped возвращает YES, и поместил в него мои NSView, прежде чем я установил его как documentView NSScrollView. Это хорошо работает. Мои элементы отображаются сверху вниз, как я и ожидал.

Но когда содержимое изменяется и мне нужно изменить фрейм documentView NSScrollView, мое содержимое исчезает.

Это было бы НАМНОГО проще с UIScrollView, но, увы.

Я предполагаю, что они эквивалентны:

[NSScrollView.documentView setFrame:newFrame];
[UIScrollView setContentSize:newSize];

Я могу представить, что многим кодировщикам нужен перевернутый NSScrollView, но как вы справитесь с изменением размера контента без этого безумия? Очевидно, я что-то упускаю.

Кто-нибудь? Спасибо!


person pizzafilms    schedule 04.11.2013    source источник
comment
Если вы собираетесь использовать Auto Layout вместо этого, я записал видеоурок. Посмотрите мой ответ на другой вопрос: stackoverflow.com/a/49947440/2846508   -  person Sparky    schedule 20.04.2018


Ответы (2)


можешь попробовать просто установить

[scrollView.documentView setFrameSize:newFrame.size];

чтобы увидеть, исчезнет ли ваш контент?

person lead_the_zeppelin    schedule 04.11.2013
comment
То же самое. Он просто исчезает. - person pizzafilms; 04.11.2013
comment
@pizzafilms где вы устанавливаете setFrameSize:? - person lead_the_zeppelin; 04.11.2013
comment
Я пробовал настроить его в разных местах с тем же результатом. Сначала я создаю большой перевернутый NSView и помещаю туда другие мои представления. Затем я установил для documentView свое большое представление содержимого. Затем я вычисляю фактический размер элементов и устанавливаю frameSize. - person pizzafilms; 04.11.2013
comment
Интересно ... Я распечатал фреймы элементов внутри моего documentView перед изменением размера фрейма (и они были видны), а затем распечатал фреймы после установки размера фрейма. После этого кадры y origin были отрицательными числами. - person pizzafilms; 04.11.2013
comment
Я создаю свои внутренние виды, создавая их с рамкой нормального размера, а затем добавляю Subview. - person pizzafilms; 04.11.2013
comment
Я просто попробовал это сам и не могу воспроизвести указанное поведение. Можете ли вы разместить больше кода? Мы разберемся с этим! - person lead_the_zeppelin; 04.11.2013
comment
позвольте нам продолжить обсуждение в чате - person pizzafilms; 04.11.2013
comment
вы пробовали установить autoResizeMask на RGFlippedView? - person lead_the_zeppelin; 04.11.2013

Проблема заключалась во внутренних представлениях и автоматическом изменении размеров / ограничениях. Мои внутренние представления на самом деле представляют собой серию контроллеров представлений с собственным файлом xib. В каждом контроллере представления я добавил следующую строку:

[self.view setAutoresizingMask:NSViewNotSizable];

И это все решило.

Особая благодарность lead_the_zeppelin за то, что помог мне (в чате) разобраться во всем.

person pizzafilms    schedule 04.11.2013
comment
ууууу. Я был так близко :) - person lead_the_zeppelin; 04.11.2013
comment
Еще раз спасибо всем за помощь! - person pizzafilms; 04.11.2013