2016-07-20 12 views
0

ユーザーがボタンを押したときにサブビューを非表示にしたいと思います。このサブビューには、設計時に60%の不透明度が設定されています。サブビューは、ボタンが存在する場所から滑らかなアニメーションで表示されます。これは働いていなかったスウィフト:ボタンをクリックするとサブビューをアニメーションで表示します。

@IBAction func moreOptions_Clicked(sender: AnyObject) { print("moreOptions clicked") 

    UIView.animateWithDuration(0.9, delay: 0.2, options: UIViewAnimationOptions.TransitionCurlDown, animations: { 
     //self.objMoreView.hidden = false 
     // Show view with animation 
    }, completion: nil)} 

:以下

Screenshot for question

は、私が試したコードです。どんな解決策ですか?

+1

'alpha = 0'を試してから非表示にします完了? – Tj3n

答えて

1

.alpha = 1して.hidden = falseを交換し、それが動作するはずです;)

説明:

をあなたのUIオブジェクトの "可視性" をアニメーション化したい場合:

をごアルファの初期値を設定します0(オブジェクトは「非表示」になります) アニメーション中にの値が1UIView.animateWithDuration()は、期間中にすべての値を渡すことによって、0 - > 1変化をアニメートします。サブビューを徐々に表示するアニメーションが表示されます。

あなたが位置したり、UIオブジェクトのサイズアニメーションたい場合:

yourObject.frame.size.(height or width)

または

yourObject.frame.origin.(x or y)

は、私はあなたを助け願っています。

+0

Nope。それは働かなかった –

+0

私は私の答えを更新しました、多分それはより詳細かもしれません。 –

+0

同じ問題を抱えているメンバーの場合、回答が解決策である場合は、躊躇しないでください。それは助けることができます; p –

0

また、制約を使用してこれを行うこともできます。 たとえば、ビュー内のボタンに上限制約を設定します。 はその制約を参照してください:

self.whatEverTopButtonConstraint = NSLayoutConstraint(item: self.whatEverButton, attribute: .Top, relatedBy: .Equal, toItem: self.whatEverSubView, attribute: .Top, multiplier: 1, constant: 0) 
self.whatEverSubView.addConstraint(self.whatEverTopButtonConstraint) 

その後、あなたはボタンが表示されるようにしたい時はいつでも、何が必要にこの制約の定数を設定します。 最後に、素晴らしいスプリング効果でアニメーションを作成するだけです。

func showButton() { 
     self.whatEverTopButtonConstraint.constant = 20 //custom the right constraint constant here 
     UIView.animateWithDuration(0.9, delay: 0.2, usingSpringWithDamping: 0.8, initialSpringVelocity: 1, options: .CurveEaseInOut, animations: { 
     self.whatEverButton.alpha = 1 
     self.whatEverSubView.layoutIfNeeded() 
     }, completion: nil) 
    } 

もちろん、このコードは位置を垂直方向にのみアニメーションします。同じ時間に水平方向に動かしたい場合は、例えば右端から制約を設定し、アニメーションを呼び出す直前に定数を設定します)

関連する問題