2015-01-12 3 views
0

Я хочу изменить изображение y в анимации и изменить текст метки. Но когда я это делаю. ImageView поднимается до 100, а затем делает анимацию от -100 до 0. Но я хочу, чтобы она пошла вниз 100.Swift animateWithDuration()

Если я не изменяю текст метки, анимация работает отлично.

label.text = "test" 

    UIView.animateWithDuration(0.5, animations: { 

     self.imageView.frame.origin.y += 100 

    }) 

Также, если я это сделаю, он меняет текст и не перемещает изображение.

label.text = "test" 
    imageView.frame.origin.y += 100 

ответ

0

Вы используете AutoLayout. Вы не можете изменить frame непосредственно при использовании автоматического макета.

Вы должны установить ограничения, а затем анимировать изменение ограничений, чтобы анимировать представления.

Кроме того, вы не можете сделать blah.frame.origin.y += 100 IIRC источник в CGrect только для чтения.

Вы можете сделать ...

Blah.frame = CGRectOffset(blah.frame, 0, 100) 

Но опять-таки, что не будет работать с автоматической компоновки.

Редактировать

Происхождения устанавливаемое в стрижа. Спасибо jrturton :-)

+1

Происхождение можно установить с помощью быстрого – jrturton

+0

А, ок. Я не был уверен в быстроте. Спасибо :-) – Fogmeister

+0

Так что с AutoLayout нет способа, и у меня есть генерация образа в моем коде? –

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