2016-05-16 10 views
1

私は現在使用しているアプリのアニメーションを複製しようとしています。アプリでは、写真を撮った後、ユーザーがUIImageViewをタップすると、スムーズに特定のサイズに拡大され、UIImageViewをタップするとスムーズに元のサイズに折り畳まれます。ここでUIImageViewをAutoLayoutでスムーズにアニメーション化する方法は?

は一例です:

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

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

関連する問題