2017-01-14 7 views
0

UIViewの高さを高さ1pxから高さ41pxにアニメーションしようとしています。これは現在の作品ですが、下から上にアニメートするビューの代わりに上から下に移動します。ここでUIViewの高さを上から下へアニメーションしようとしました

は、私はそれがアップアニメーション化するために使用していたコードであると

func animateBackgroundHeightUp() { 
    print("animate") 
    UIView.animate(withDuration: 0.5, animations: { 
     self.personBg.frame.size.height = 41 
    }) 
} 

func animateBackgroundHeightDown() { 
    print("animate") 
    UIView.animate(withDuration: 0.5, animations: { 
     self.personBg.frame.size.height = 1 
    }) 
} 

ダウン私は、原点yを設定する方法を理解する必要があると思いますが、私は迅速に見つけることができないよう3例。

EDIT

func animateBackgroundHeightUp() { print("animate") UIView.animate(withDuration: 0.5, animations: { self.personBg.frame.size.height = 41 self.personBg.frame.origin.y = -41 }) } 

func animateBackgroundHeightDown() { print("animate") UIView.animate(withDuration: 0.5, animations: { self.personBg.frame.size.height = 1 self.personBg.frame.origin.y = 41 }) } 

何私のために働いてしまったことは、この設定です。しかし、なぜ起源が20になる必要があるのか​​、私は混乱していますか?

func animateBackgroundHeightUp() { 
    print("animate") 
    UIView.animate(withDuration: 0.25, animations: { 
     self.personBg.frame.size.height = 41 
     self.personBg.frame.origin.y = 20 
    }) 
} 

func animateBackgroundHeightDown() { 
    print("animate") 
    UIView.animate(withDuration: 0.25, animations: { 
     self.personBg.frame.size.height = 1 
     self.personBg.frame.origin.y = 59.9 
    }) 
} 

59.9の数値は、ロード時に起点yの値を出力することによって計算されました。

+0

小数点以下の位置は避けてください。レンダリングエンジンが補間するため、非整数の位置にあるビューがぼやけて見えます。 (Retinaデバイスでは1ポイントあたり2ピクセルなので、Retinaデバイスでは.5で終わるx&yポジションで離れることができます)。 –

答えて

1

iOSビューの原点は、画面の左上隅です。ビューのフレームは、左上隅に原点をピン止めし、高さはどれほど遠くまで伸びているかを示します。

ビューの高さを上げると、上端が移動せず、下端が下になります。

ビューが上に向かって見えるようにするには、origin.yを同じ量だけ減らしながら高さを増やす必要があります。

関連する問題