2016-05-16 57 views
1

我試圖複製我目前使用的應用程序的動畫。在應用程序中,圖片拍攝後,如果用戶點擊UIImageView,它會平滑地擴展到一定的大小,並在點擊UIImageView時,它會平滑地崩潰到原始大小。如何使用AutoLayout在swift中順利地動畫UIImageView?

下面是一個例子:

enter image description here

然而,當我試圖複製它,動畫是 「wooply」 爲在這裏看到:

enter image description here

這裏是我的代碼示例:

if recogizer.view == thumbnailImageView && isThumbnailExpanded == false 
{ 
    UIView.animateWithDuration(1, animations: {() -> Void in 

    self.thumbnailImageView!.frame.size.width = self.view.frame.size.width * 0.7 
    self.thumbnailImageView!.frame.size.height = self.view.frame.size.height * 0.6 
    self.thumbnailImageView!.frame.origin.x = (self.view.frame.width/2) - (self.thumbnailImageView!.frame.size.width/2) 
    self.thumbnailImageView!.frame.origin.y = -100 

    }) 

    isThumbnailExpanded = true 
    } 
else if recogizer.view == thumbnailImageView && isThumbnailExpanded == true 
{ 
    UIView.animateWithDuration(1, animations: {() -> Void in 

    self.thumbnailImageView!.frame.size.width = self.thumbnailImageViewWidth 
    self.thumbnailImageView!.frame.size.height = self.thumbnailImageViewHeight 
    self.thumbnailImageView!.frame.origin.x = self.thumbnailImageViewXPosition 
    self.thumbnailImageView!.frame.origin.y = self.thumbnailImageViewYPosition 

    }) 

    isThumbnailExpanded = false 
} 

H ere的我的自動佈局約束:

enter image description here 如何使我的UIImageView更加平滑地動畫,如上所示?

感謝

+0

檢查自動佈局約束或發佈它的快照 –

+0

從大小檢查器發佈大小類屬性快照。 –

回答

2

,因爲你正在改變圖像的長寬比動畫出現顫抖,你應該保持寬高比以免壓扁的圖像。


此外,你應該不是一個動畫自動佈局約束爲基礎,通過改變它的框架UIView。在動畫塊內部,您應該更改在故事板中添加的圖像視圖約束。

要獲得對您的故事版創建的約束的引用,請創建一個IBOutlet,作者爲控制 - 將它們拖動到您的視圖控制器。這將在您的代碼中創建一個類型爲NSLayoutConstraint的變量。在動畫塊內部,更改要更改的每個約束的constant屬性,然後在視圖上調用layoutIfNeeded

UIView.animateWithDuration(1, animations: { 

    yourConstraint.constant = 20 
    // any other constraints... 
    // ... 
    thumbnailImageView.layoutIfNeeded() 
}) 
+0

我希望它不會來,因爲我必須改變每個設備屏幕的常量。這是處理這種自動佈局問題的唯一方法嗎? – Pangu

+0

您不應該在每個設備基礎上更改常量,您應該修改具有約束的比例乘數。 – paulvs

+0

我不確定我是否理解...... ?? ...比例高度乘數已經在故事板中被修改過...請舉例嗎? – Pangu