2017-02-05 6 views
1

Итак, я пытаюсь понять, как навигационная панель и виды прокрутки могут работать вместе.Ошибка смещения содержимого UIScrollview и Nav bar

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

Дело в том, что если я нажму на контроллер вида и сменил верхнюю панель на значение «Нет» и настроил свои представления таким образом, а затем переключил его после того, как мои представления настроены, похоже, что это работает. он автоматически перемещает мой контент в конструкторе inteface под панель навигации, и все ограничения затем работают нормально.

Я угадываю, что у меня отсутствует концепция здесь о том, как прокрутки и панели навигации настроены так, как вам не нужно менять его никому, а затем снова, чтобы он мог исправить взгляды?

Редактировать 1: кажется, что это связано с тем, где я прикрепляю верхнюю часть метки .... если я привяжу ее к руководству Top Layout (так что он успешно настраивается для панели навигации и строки состояния), то это не делает вообще-то, если я привяжу его к верхней части контейнера, у меня есть его набор в 64pts, который я не хочу жестко запрограммировать?

Scroll View with Label

ответ

0

Это зависит от свойства панели навигации Translucent Если панель навигации является полупрозрачный тем содержимое видно, как в приведенном ниже примере. Это необходимо представление прокрутки распространяется на за панель навигации

Translucent demo

Если Translucent установлен в false, то нет никакой необходимости в представлении прокрутки, чтобы быть позади панели навигации, следовательно, толкая вид прокрутки под панелью навигации.

Переход от инфракрасного до ни одного не приводит к тому, что контроллер вида использует навигационную панель как обычный элемент на экране, независимо от его свойства Translucent.

Update 1: Реализация

Я думаю, что я получаю то, что вы хотите сделать с свитка View, но зачем использовать контейнер? почему бы просто не добавить изображения и ярлыки непосредственно в scrollView. Я также предложил бы лучший способ сделать это: почему бы вам не использовать tableViewController с представлением как его заголовок и без каких-либо ячеек.

enter image description here enter image description here

Теперь вы можете установить фиксированный размер содержания или изменить размер программно

создать IBOutlet из вашего containerView в код

в viewDidLoad

containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: self.tableView.frame.height) 

или

containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 200) 

или

containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: self.tableView.frame.height * 2) 

в зависимости от того, как вы хотите конфиг вид. Я думаю, что это самый простой способ справиться с scrollView с помощью конструктора интерфейса.

+0

Спасибо, так как я могу правильно настроить интерфейс. На данный момент у меня есть контроллер представления с навигационной полосой, унаследованной по мере того, как она переходит к этому, я разместил прокрутку на контроллере представления, который идет под панелью навигации, так как я хочу, чтобы контент прокручивался под ним, чтобы я мог его видеть. Затем я добавляю новое представление в вид прокрутки, который будет использоваться в качестве представления контейнера, где я могу добавить свои изображения и метки для прокрутки, это представление также занимает весь размер. Теперь, когда я помещаю ярлык наверху и выталкиваю его, а затем запускаю, он, кажется, отображается в неправильном месте на симуляторе (добавив дважды размер навигационного бара). – Michael

+0

добавил обновление к моему оригиналу, похоже, где я наклейте ярлык? не уверен, какой должен быть его верхний якорь – Michael