2015-03-04 7 views
0

У меня есть UILabel с центром в UIView, который расширяет/заключает контракты в зависимости от размера экрана устройства. Я применил ограничения, чтобы UILabel оставался центрированным независимо от размера UIView, который отлично работает.iOS Swift: постоянно сохраняйте UILabel в UIView, который меняет высоту

Теперь я окажусь изменение размера UIView вручную, как так (вид контроллера, где MainView есть):

self.myView.frame = CGRectMake(0,0,self.mainView.frame.width, self.mainView.frame.height) 

Так это растягивает UIView, чтобы заполнить весь экран/View Controller (это также анимированный) , Я предположил, что UILabel будет автоматически центрировать себя автоматически, но, похоже, он сам себя зацеплял, как будто он был ограничен вершиной UIView, оставляя над ним пустое пространство myView.

Как я могу указать UILabel, чтобы оставаться в центре изменяющегося по высоте UIView, в котором он находится?

+0

Мы должны видеть ваши ограничения –

+0

Ограничения - это только «выровнять центр x» и «выровнять центр y». – ADRSPR

ответ

1

Мы должны видеть ваши ограничения, чтобы помочь, но:

  1. Вы должны использовать центрирование ограничения.
  2. Задайте границы, а не рамку myView.
  3. Вам может понадобиться позвонить setNeedsLayout по мнению ViewController вы в

Кроме того, установить цвет фона UILabel - это может быть по центру, но текст не по центру внутри него. Для этого задайте свойства выравнивания.

+0

Спасибо за информацию. 1. Определенно использовать входящие ограничения. 2. Использование границ делает его еще более непредсказуемым - UILabel полностью выпрыгивает из myView. 3. Я думаю, что это может быть решением. Не используйте его раньше, поэтому получите ошибку «Использование неразрешенного идентификатора» setNeedsLayout. Не знаете, как исправить. 4. Я установил этот цвет, и он выглядит нормальным и центрированным. – ADRSPR

+0

обновлено ... setNeedsLayout is сообщение UIView. Назовите его в корневом представлении контроллера вида. –

Смежные вопросы