2015-01-12 3 views
0

애니메이션에서 imageView의 y를 변경하고 라벨의 텍스트를 변경하고 싶습니다. 하지만 그렇게 할 때. ImageView는 100을 올린 다음 -100에서 0으로 애니메이션을 수행합니다. 그러나 100으로 내려갑니다.Swift animateWithDuration()

레이블의 텍스트를 변경하지 않으면 애니메이션이 완벽하게 작동합니다.

label.text = "test" 

    UIView.animateWithDuration(0.5, animations: { 

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

    }) 

또한 그렇게하면 텍스트 만 변경되고 imageView는 이동하지 않습니다.

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

기원은 swift를 사용하여 설정할 수 있습니다 – jrturton

+0

아, 그래. 나는 신속하게 확신하지 못했습니다. 감사합니다 :-) – Fogmeister

+0

AutoLayout을 사용할 수있는 방법이 없으며 코드에서 imageView를 생성합니까? –

관련 문제