UIView
にUIButton
/UILabel
をアニメーションしたいです。たとえば、すべてのUIButton
が1つのコード行で1つずつフェードインします。これは可能ですか? Github
を検索しましたが、何も見つかりませんでした。私は毎回UILabel
またはUIButton
を一つずつアニメーション化する作業がたくさんあることが分かります。ありがとうございました。1つのUIViewにすべての要素をアニメ化
0
A
答えて
1
UIView
のサブビューを繰り返して、それがUILabel
またはUIButton
であるかどうかを確認することで、自分で行うことができます。
var counter : Double = 0
func hideSubviews(view:UIView){
for tempView in view.subviews{
let when = DispatchTime.now() + counter
if tempView is UIButton || tempView is UILabel{
DispatchQueue.main.asyncAfter(deadline: when) {
UIView.animate(withDuration: 1, animations: {
//this does fade out, change 0 to 1 for fade in
tempView.alpha = 0.0
})
}
}
//increment by gap you want
counter += 1
}
}
編集:
var counter = 0
func hideSubviews(view:UIView){
for tempView in view.subviews{
if tempView is UIButton || tempView is UILabel{
UIView.animate(withDuration: 0.3, delay: TimeInterval(counter), options: .init(rawValue: 0), animations: {
tempView.alpha = 0.0
}, completion: nil)
}
counter += 1
}
}
そして:私はこのはるかに簡単な方法を忘れてしまった
ため息は、あなたがアニメーション機能の遅延プロパティを使用することができるような何かをviewDidAppear
のどこかで、関数を呼び出してビューを渡すだけです。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
hideSubviews(view: view)
}
1
あなたが探しているコードの1行としてファンクションを作成して呼び出すことができます。ここでは、フェードインしたいボタンやラベルの配列を追加します。作業。あなたがする必要があるのは、ストーリーボードでUIButtonのアウトレットを接続することだけです。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var button3: UIButton!
var count = 0
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
let allButtons = [button1, button2, button3]
fadeInButtons(buttons: allButtons as! [UIButton])
}
func fadeInButtons(buttons: [UIButton]) {
UIView.animate(withDuration: 0.4, animations: {
buttons[self.count].alpha = 0
}) { (value) in
if self.count < buttons.count - 1 {
self.count += 1
self.fadeInButtons(buttons: buttons)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
ボタンとあなたのストーリーボードがこの
ようになっているはずですので、あなたがする必要があるすべては、関数fadeInButtons(ボタン:[UIButton])を呼び出すで、それにの配列を渡しますボタンを使用して、次々とそれを行います。これを変更して、func fadeInButtonsというラベルを含めることもできます(ボタン:[UIButton]、ラベル:[UILabel])。各アニメーションの時間を変更することができます。この例では、アニメーションのフェードインは0.4秒で完了します。
2
let duration = 0.5
view.subviews.flatMap { $0 as? UILabel ?? $0 as? UIButton }.enumerated().forEach { i, o in UIView.animate(withDuration: duration, delay: Double(i) * duration, animations: { o.alpha = 0 }) }
"one"行にあります。私はいくつかのエラーのplsはそれらを修正すること自由に感じましたので、もし
は自分の携帯電話上でこれを型付き:)
関連する問題
- 1. UIView/UIImageViewのクロッピングをアニメ化する
- 2. カスタムUIView:遅れてサブレイヤをアニメ化
- 3. UIViewのCoreGraphics/drawRectコンテンツにアニメ化
- 4. ボタンのクリックでspan要素とli要素をアニメ化する
- 5. サブビューを持つUIViewのサイズをアニメ化する
- 6. mouseoverとanimate.cssで要素をアニメ化
- 7. 4つの要素を並べて1つの要素に結合する
- 8. jqueryを使用して要素の高さをアニメ化する
- 9. クラス名に応じて要素をアニメ化する
- 10. React Native:いくつかの要素のうちの1つのみをアニメ化する
- 11. UIViewで1つの要素のみを回転する方法
- 12. CSSのスキュー角度に歪んだ要素をアニメ化する
- 13. GSAPを使ってSVG要素をアニメ化する
- 14. 要素の一部のみをアニメ化する方法
- 15. ポリマーネオンアニメーションでビューポートに可視の要素をアニメ化
- 16. CSS - 要素の高さをautoにアニメ化
- 17. 3つのビューを1つずつアニメ化
- 18. DOM要素の削除と貼り付けをアニメ化する
- 19. 要素の位置ループをアニメ化する
- 20. <canvas>要素のクリッピング領域をアニメ化する
- 21. 1つの要素ですべてのボックスを削除する
- 22. XSLTをコピーし、その後、すべての1つの要素
- 23. iPadフォトアプリケーションのようなUIViewをアニメ化する
- 24. スワイパーコールバックとJqueryを使用してスライドショー内の要素をアニメ化する
- 25. CSS3とjQueryを使って順番に要素をアニメ化する
- 26. wpf style ColorAnimationUsingKeyFrames子要素をアニメ化する
- 27. ngAnimateとanimate.cssで子要素をアニメ化する
- 28. JQueryでスピンSVG要素をアニメ化する
- 29. UIViewアニメーションより多くのプロパティをアニメ化しました
- 30. AutolayoutでUIViewをアニメーション化すると、UITableViewのチェックマークがアニメ化されます
をすごいO、私はそれだけで最初の配列でそれらを配置することなく、すべてのUILabelとUIButtonを取ることが大好きです。ありがとうございます – NoKey