2012-10-14 76 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

有點遲來的答案,但我解決了這個問題。看起來,如果自動佈局被啓用,你不能在代碼中改變視圖框架。相反,你需要動畫視圖,您可以在故事板設置的限制,然後動畫像這樣:

[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,因爲它會更新約束。