2015-07-14 1 views
1

Я создал UIView с помощью раскадровки, установил ограничения. Когда я запускал приложение, интерфейс выглядел отлично. Вид охватил весь экран, как и предполагалось (я сделал черный цвет фона, чтобы было легче видеть, что происходит).Как я могу получить правильные размеры для UIViews, созданных в раскадровке во время выполнения

http://contentlibrary.sinaapp.com/View%20from%20Storyboard.png (Прости, что я должен связать изображения в, как это, но система говорит, что мне нужно по крайней мере 10 респ размещать изображения.)

Однако, когда я попытался получить размер этой точки зрения используя myView.bounds.size. Я получил (600, 580), что точно такое же количество, что и в инспекторе размеров раскадровки.

Я создал еще один UIView в коде

var myView = UIView(frame: CGRect(x: 0, y: 20, width: 600, height: 580)) 

и добавить его в качестве подвида к представлению верхнего уровня. Он появился, но он не охватывал весь экран, как представление, которое я создал в раскадровке. Оба представления, которые я создал в раскадровке и в коде, имеют одинаковое значение в их .bounds.size, но они, похоже, имеют очень разные размеры на экране. (Эта картина вид создается в коде. См есть пустое пространство в нижней части экрана.)

http://contentlibrary.sinaapp.com/View%20from%20Code.png

Еще одна интересная вещь, если я заменю выше UIView с UIScrollView, после того, как свиток просмотр увеличен, он будет обновлен до нужного размера. Я добавил UIScrollView так же, как я добавил UIView с помощью раскадровки. Я попытался напечатать его размер внутри метода делегата scrollViewDidEndZooming:withView:atScale:. Он говорит (375,0, 647,0), что является правильным размером на экране для просмотра, которое охватывает весь экран на iPhone 6.

Судя по этому, кажется, что виды, выходящие из раскадровки, не автоматически обновлять правильные размеры на экране.

Как я могу получить объект UIView, созданный в раскадровке, чтобы обновить его размер?

+0

Добро пожаловать в переполнение стека :) Можно ли включить скриншот поведения, которое вы видите? – ndmeiri

+0

@ndmeiri Извините, система говорит, что я не могу загружать изображения. – CCC

+0

Нет проблем. Можете ли вы опубликовать ссылку на изображение при любых изменениях? – ndmeiri

ответ

1

Похоже, что вы проверяете размер слишком рано.

Попробуйте ввести код в viewDidLayoutSubviews и посмотрите, изменится ли он.

+0

Я пробовал. Я попытался проверить размер в трех разных местах: 'viewDidLoad',' viewWillAppear: ',' ​​viewWillLayoutSubviews', а в случае 'UIScrollView',' scrollViewDidEndZooming: withView: atScale: '. Первые три не были хорошими, последний был, и мне интересно, почему. – CCC

+0

Вы попробовали в 'view ** Did ** LayoutSubviews'? –

+0

Это сработало. Действительно много. Похоже, это всего лишь крошечный крошечный бит раньше, чем я предполагал. – CCC