2017-09-08 6 views
0

UIViewを画面の下からスライドさせようとしています。別のnibファイルとしてUIViewを作成しました。最初に画面のビューポートを超えてビューを追加してから、yの値をアニメーション化してスライドさせます。UIViewが下から上にスライドしない

self.bannerView = BannerView(frame: CGRect(x: 10, y: self.view.bounds.height, width: self.view.bounds.width - 10, height: 44)) 
self.collectionView?.addSubview(self.bannerView!) 

UIView.animate(withDuration: 0.5) { 
    self.bannerView?.frame.origin.y = self.bannerView!.frame.origin.y - 64 
} 

ただし、動作しないようです。ビューは表示されません。しかし計算は正しいようです。何が間違っているのか分かりません。

プロジェクトのアップロード例here

+0

あなたは自分の数学でより多くの画面をそれを推進しているの? – solenoid

答えて

2

あなただけy値の代わりに全体frameを変更する必要があります。

https://youtu.be/2kwCfFG5fDA?list=PL0dzCUj1L5JGKdVUtA5xds1zcyzsz7HLj&t=993を参照すると、フレームを変更して問題が正確に機能していることが示されています。この例は、上記のように質問にあなたの必要性に合っているSwiftにもあります。

+1

ありがとうございます。それは確かに働いた。 – Isuru

0

私はあなたの数学を検証していませんが、割り当てられたフレームのプロパティを変更するのではなく、フレーム全体を設定しようとしましたが、それは機能しません。動作しません -

var frame = self.bannerView!.frame 
frame.origin.y = frame.origin.y - 64 
self.bannerView?.frame = frame 
0

一行ソリューション:

self.bannerView?.frame = self.bannerView!.frame.offsetBy(dx: 0, dy: -64) 

(アニメーションブロック内でこれを貼り付ける)

関連する問題