質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
86.12%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

解決済

SwiftUI/Xcode/macOS 時間が経つと内容が切り替わるTextで、切り替わる時にフェードイン、フェードアウトするようにしたいです。

SwiftBeginner
SwiftBeginner

総合スコア7

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

1回答

0リアクション

0クリップ

149閲覧

投稿2022/09/25 05:51

前提・実現したいこと

macOS用アプリを作っています。
文章が8秒おきに切り替わるようにしました。
その文章が切り替わるときに、フェードイン、またはフェードアウトするようにしたいのです。
つまり、前の文章が消える→前の文章から次の文章に切り替わる(消えているので見えない)→次の文章が現れる、という順番に処理することで、見た目では前の文章がフェードアウトした後に次の文章がフェードインするようにしたいのです。

試したこと

Swift

struct ContentView: View { private let timer = Timer.publish(every: 8, on: .main, in: .default).autoconnect() @State var textOpacity: Double = 1 @State var textIndex: Int = 0 let textArray: [String] = ["Hello, world!", "こんにちは"] var body: some View { VStack { Text(textArray[textIndex]) .opacity(textOpacity) .onReceive(timer){_ in withAnimation(.linear(duration: 2.0)){ textOpacity = 0 } withAnimation(.linear(duration: 0).delay(2.5)){ if(textIndex == 0){ textIndex = 1 } else{ textIndex = 0 } } withAnimation(.linear(duration: 2.0).delay(3.0)){ textOpacity = 1 } } } } }

フェードイン、フェードアウトはopacityを0または1に変えることで実現しました。
.onReceiveのところで8秒おきに
2秒かけて消える→2.5秒目に文章が変わる→3.0秒目から2秒かけて現れる
となるようにしたつもりです。

しかし、実際にbuildすると
文章が変わる→消える→現れる
の順番になりました。

アドバイスよろしくお願いいたします。

文章が切り替わる時にフェードイン、フェードアウトが起きるようにできるならば、どんな方法でも用いたいです。
このコードの改良版はもちろん助かりますし、withAnimationやTimerなどを使わない方法でも教えていただけると大変有難いです。
よろしくお願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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