2015-09-22 3 views
0

Я получил этот блок кода в моем методе ViewWillAppear который просто перемещает набор меток вниз с экрана:ViewWillAppear не выполняет код

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

    //Hide 1,3,5 RM labels 
    oneRepMax.center.y += view.bounds.height 
    threeRepMax.center.y += view.bounds.height 
    fiveRepMax.center.y += view.bounds.height 

} 

Все 3 этикетки были должным образом связаны с моим файлом раскадровки. Когда я запускаю проект, ничего не происходит.

Если я копирую тот же самый код в метод, связанный с кнопкой, он работает так, как ожидалось.

В проекте ничего нет, поэтому я озадачен тем, почему это не работает.

Я использую Xcode 7 и следую инструкциям, где это работает в ViewWillAppearMethod. следующим образом:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

    heading.center.x -= view.bounds.width 
    username.center.x -= view.bounds.width 
    password.center.x -= view.bounds.width 
    loginButton.center.y += 30 
    loginButton.alpha = 0 



} 

ответ

2

Вы никогда не знаете, границы недо все метки появляются на экране.

Попробуйте сделать то же самое в видеDidAppear.

Из документации:

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

+0

Хорошо, что сработало, но если я изменю view.bounds.height на что-то вроде 1000, разве это не должно работать? Я буквально следую учебнику, где это делается, и оно работает. – user1923975

+0

вы можете поделиться ссылкой на учебник? –

+0

Это видео-учебник, в котором, к сожалению, есть плательщик – user1923975

0

Попробуйте изменить код на viewDidAppear.

Дополнительную информацию можно найти в this old post.

2

Этот фрагмент кода из книги Рэя Вендерлиха iOS Анимация по учебникам, не так ли? У меня была та же проблема. Я нашел причину этой проблемы - в представлении из учебника не используются классы автоматического макета и размера, поэтому метка не отвечает при настройке своих координат. Попробуйте изменить цвет метки в методе viewWillAppear, например labelText.textColor = UIColor.greenColor(), и все идет хорошо, но если вы попытаетесь установить координаты, как labelText.center.x -= view.bounds.width, ничего не происходит. Итак, нажмите на свой просмотр и перейдите в File Inspector, прокрутите немного, и вы увидите галочки Use Auto Layout и Use Size Classes снимите флажок, и вы получите то, что вам нужно. Но вы получите боль в заднице либо потому, что это совсем другая история, чтобы закодировать без автоматического макета. Ну тогда удачи.

0

Существует несколько способов, называемых при загрузке контроллера View.Их порядок что-то вроде этого (на UIViewController):

loadView

viewDidLoad

viewWillAppear:

viewWillLayoutSubviews

layoutSubviews (на UIView с внутри контроллера зрения)

viewDidLayoutSubviews (здесь-контроллер знает, что все установлено)

viewDidAppear:

От viewDidLayoutSubviews вы полностью уверены, что ваши изменения вступят в силу, так как элементы установлены. Перед этим вы не можете быть уверены (если вы не кэшировали контроллер вида, и он появляется во второй раз).

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