2012-10-14 3 views
0

애니메이션을 통해 UIImageView의 너비를 크게하고 싶습니다. 나는 UIView와 UIImageView를 스토리 보드에서 만들었다. 달성하고자하는 것은보기가 왼쪽에서 오른쪽으로 크기 조정되고 원래 위치를 유지하는 것처럼 보입니다. 다음 코드를 시도했지만, 부모 뷰의 왼쪽 상단 모서리에서 이미지 뷰를 움직여서 움직이고 크기를 조절하고 시작부터 스케일에 도달 할 때까지 스케일링합니다.UIImageView 애니메이션이 올바르게 작동하지 않습니다.

[UIView animateWithDuration:4.0f delay:1.0f options:UIViewAnimationCurveEaseOut animations:^{ 
    CGRect currentFrame = self.imageview1.frame; 
    currentFrame.size.width = 150; 
    self.imageview1.frame = currentFrame; 
}completion:nil]; 

이 동작이 나타나는 이유는 무엇입니까?

+0

전체 스토리 보드에서 자동 레이아웃을 사용하지 않도록 설정하면 애니메이션이 올바르게 재생되는 것으로 나타났습니다. 그러나 자동 레이아웃을 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? – Mike

+0

질문에 충분한주의를 기울이지 않으면 문제를 시연하는 작은 샘플 프로젝트를 모아서 시험해 볼 수있는 GitHub에 놓을 가치가 있습니다. –

답변

0

조금 늦게 답변했지만 문제가 해결되었습니다. autolayout이 활성화 된 경우 코드의 뷰 프레임을 변경할 수없는 것으로 보입니다. 대신 당신은 스토리 보드에 설정할 수 있습니다보기의 제약 애니메이션을 다음과 같이 애니메이션을해야합니다

[self.view layoutIfNeeded]; 
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ 

    self.bottomViewY.constant = -196; 

    [self.view layoutIfNeeded]; 

} completion:nil]; 

self.bottomViewY가 IBOulet으로 할당 된 제약 조건입니다. 제약 조건을 업데이트 할 때 layoutIfNeeded를 호출해야합니다.

관련 문제