2016-03-01 2 views
0

Я создал представление с UIScrollView. Когда я пытаюсь прокрутить вниз, он работает по-разному на разных устройствах. Я понял, что это связано с разным размером экрана устройства. Я использую scrollView.contentSize = CGSizeMake(325, scrollView.frame.height) для установки высоты прокрутки.UIScrollView не прокручивает или не прокручивает частично при работе на другом устройстве swift

Я наткнулся на это, когда я пытался найти решение моей проблемы

CGRect contentRect = CGRectZero; 
for (UIView *view in self.scrollView.subviews) { 
    contentRect = CGRectUnion(contentRect, view.frame); 
} 
self.scrollView.contentSize = contentRect.size 

Но это не работает для меня, как моя Scrollview состоит из множества подвидов, этикеток и кнопок различных размеров с различным позиции. Я все разработал scrollview на раскадровке, и я не использовал автоматическую компоновку.

Мне нужно получить точную высоту прокрутки относительно устройства, на котором оно работает. Есть ли прямой и простой способ реализовать это? Если нет, я хотел бы знать, что мне нужно сделать, чтобы получить желаемую высоту. Заранее спасибо!

ответ

0

Я думаю, вы сбиваете с толку контент contentSize scrollview с его рамкой/границами. Рамка scrollview должна быть сопоставлена ​​с границами экрана устройства, на котором вы работаете. ContentSize должен быть размером «виртуального холста», т. Е. Размером вашего «много подзонов, ярлыков и кнопок разных размеров с разными позициями». Это никогда не должно меняться, потому что вы хотите, чтобы scrollview мог прокручивать, чтобы показать все, независимо от фактического размера устройства. Я бы использовал autolayout, чтобы расширить края прокрутки до краев своего супервизора. Вам нужно будет установить contentSize явно в коде, хотя, к сожалению, в редакторе раскадровки нет возможности сделать это.

+0

Я устроил подпрограммы, кнопки и ярлыки в раскадровке. Я делаю все остальное в коде. Прокрутка просматривается на границах устройства, как вы сказали. Вы говорите, что contentSize никогда не должен меняться, но contentSize не остается постоянным на разных устройствах. Я должен менять contentSize в коде каждый раз, когда я его создаю на новом устройстве или не прокручивается по желанию. – ebby94

+0

Я в замешательстве. Если вы упорядочиваете элементы управления в раскадровке, тогда на основе этого вы должны знать contentSize. Если вы перемещаете их по коду в зависимости от размера фрейма, вы должны иметь возможность определить contentSize после того, как вы сделали свой макет. Этот фрагмент кода должен работать, если вы запустите его после того, как все подпункты находятся в scrollview. Что он возвращает, и как вы думаете, что он должен вернуться? – jsd

+0

Ширина и высота прокрутки - 325 и 800 на раскадровке. Если я установил размер контента на это, он прокручивается правильно, когда я создам его на iphone 4s и не работает, когда я запускаю его на устройствах с большим размером экрана, например, iphone 6 и 6 plus. Я также проверил, что scrollView.frame.height возвращает разные значения на разных устройствах. Он вернул 712 на iPhone 4 и вернулся 968 на iPhone 6s Plus. – ebby94