Я использую iOS 6 и Xcode 4.6, а с помощью Interface Builder я добавил в контроллер UIScrollView
, который использует все доступное пространство. В этом UIScrollView
я добавил несколько просмотров (a UIImageView
, a UITextView
и UITableView
(я отключил прокрутку для UITextView
и UITableView
)).Содержимое scrollview меняет размер при прокрутке
В:
- (void) viewDidLayoutSubviews;
метод я изменен все мои взгляды, увеличивая их высоту (в соответствии с их соответствующим содержанием). Затем я установил contentSize моего UIScrollView
так, чтобы он соответствовал его содержимому (мои 3 представления).
Изменение размеров выполняется, и я могу видеть их в своем приложении, когда я его запускаю. Кроме того, прокрутка хорошая (contentSize является правильным, поскольку я могу прокручивать).
Однако у меня есть одна большая проблема: как только я прокручиваю, мои 3 представления изменяются до их первоначального размера (вместо того, чтобы сохранить размер, который я назначил им через свойство кадра).
Все мои представления добавлены с помощью Interface Builder в мою раскадровку.
Знаете ли вы, что я сделал не так? Почему мой контент UIScrollView's
пересылает его размер при прокрутке?
Спасибо за вашу помощь
Почему вы не используете метод viewDidLoad? Я использовал метод viewDidLoad, когда у меня были одни и те же задачи, и он работал хорошо для меня. –
Да, как сказал Тимур, вам нужно сделать правильный код в методе viewDidLoad. потому что, когда прокручивается UIScrollView, он вызывает метод layoutSubviews и его subviews тоже. Это приведет к тому, что их подходы будут отправлены в исходное положение. –
Я уже пытался изменить размеры просмотров в viewDidLoad, но он не работает (я открыл вопрос по этой проблеме, кстати http://stackoverflow.com/questions/17907178/uitextviews-frame-not-set-in-viewwillappear/ 17908561) (это потому, что мой контроллер загружается из события push, а представления добавляются из раскадровки). Поэтому мне нужно изменить размер в viewDidLayoutSubviews. Как мне продолжить? –