🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1818閲覧

UIラベルのアニメーションの表示ができない

sta_sato

総合スコア2

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/01/03 05:49

Swiftでアプリを開発しています。
ラベルのテキストをアニメーション表示したく、
UIView.animateを使ってコードを書きましたが実現できません。

発生している問題・エラーメッセージ

UIView.animateを使って、ボタンを押したら、
ラベルのテキストがフェードインされるアニメーションをつくりたいのですが、
アニメーションで表示されません。(エラーは発生していない)

実現方法は、UIView.animateを使わなくても良いのですが、
合わせて、なぜアニメーションされないかの原因を教えていただけると大変助かります。

該当のソースコード

言語:Swift
ソースコード:
import UIKit

class ViewController: UIViewController {

@IBOutlet weak var buttonprocess: UIButton! @IBOutlet weak var firstName: UILabel! @IBOutlet weak var secondName: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. firstName.text = "" secondName.text = "" buttonprocess.setTitle("はじめる", for: .normal) } //ボタンを押した時の処理 @IBAction func Tap(_ sender: Any) { //animaiton self.animate() buttonprocess.setTitle("もう一度", for: .normal) } //フェードインさせるアニメーションの処理(firstnameとsecondnameをアニメーションにしたい) func animate(){ UIView.animate(withDuration: 1.0,delay: 0.2,options:.curveEaseIn, animations: { let exenamemanager = exeNamemanager() self.firstName.text = exenamemanager.NameValue1.text self.secondName.text = exenamemanager.NameValue2.text },completion: nil) }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UIView.animate は基本的に値が連続的に変化するものが対象なため、text を設定してもアニメーションさせることはできません。フェードインしたいなら alpha の値をアニメーションさせてみては。

swift

1 func animate() { 2 let exenamemanager = exeNamemanager() 3 self.firstName.text = exenamemanager.NameValue1.text 4 self.secondName.text = exenamemanager.NameValue2.text 5 self.firstName.alpha = 0.0 6 self.secondName.alpha = 0.0 7 UIView.animate(withDuration: 1.0,delay: 0.2,options:.curveEaseIn) { 8 self.firstName.alpha = 1.0 9 self.secondName.alpha = 1.0 10 } 11 }

投稿2021/01/03 11:23

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sta_sato

2021/01/03 11:45

hoshi-takanori さん ご回答ありがとうございます。 初心者質問な内容で申し訳なかったです。 UIView.animate で利用できるのは、座標の位置や、色などの変化に対して処理を行う物で、 Labelのような、変化のないものに対してのアニメーションはできない、ということだと理解しました。 alphaは、透過比率なので、この値を0から1にあげることでフェードインを実現する、ということなのですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問