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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Xcode

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

Swift

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

Q&A

解決済

1回答

1804閲覧

カードをめくるアニメーションを実装したい

muaik

総合スコア4

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/10/18 16:12

前提・実装したいこと

カードゲームアプリを制作しています。
オープンボタンを押すと裏面を向いていたカードが反転するようなアニメーションをし、表面の画像が表示されるようにしたいのですが、裏面画像をフリップするアニメーションは実装できたのですが、表面の画像への切り替えができずに困っています。
1枚の画像をアニメーションさせるだけでなく、2枚の画像が反転しながら切り替わるようなアニメーションの実装方法をご存知の方がいらっしゃいましたらご教授いただけますと幸いです。

現在参考にしているサイト
iOSアプリ開発でアニメーションするなら押さえておきたい基礎
https://qiita.com/hachinobu/items/57d4c305c907805b4a53

該当のソースコード

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 //カード画像を挿入したいImageView 5 @IBOutlet weak var cardImage: UIImageView! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 //裏面のカード画像を読み込み 10 let backImage = UIImage(named: "backCard") 11 // cardImageに画像を設定 12 cardImage.image = backImage 13 } 14 15 @IBAction func openBtn(_ sender: Any) { 16 //裏面のカードを左反転させるアニメーション 17 UIView.transition(with: cardImage, duration: 1.0, options: [.transitionFlipFromLeft], animations: nil, completion: nil) 18 } 19 20}

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

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

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

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

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

guest

回答1

0

ベストアンサー

UIView.transition(with:duration:options:animations:completion:)animations: で指定するクロージャに、画像反転後に行いたい操作を入れると期待されているようなアニメーションを行うことが可能となります。

animations

A block object that contains the changes you want to make to the specified view. This block takes no parameters and has no return value. This parameter must not be NULL.

Discussion

This method applies a transition to the specified view so that you can make state changes to it. The block you specify in the animations parameter contains whatever state changes you want to make. You can use this block to add, remove, show, or hide subviews of the specified view. If you want to incorporate other animatable changes, you must include the allowAnimatedContent key in the options parameter.

全体としてはこのような感じでしょうか。

Swift

1class ViewController: UIViewController { 2 //カード画像を挿入したいImageView 3 @IBOutlet weak var cardImage: UIImageView! 4 5 // 裏面のカード画像を読み込み 6 let backImage = UIImage(systemName: "circle.fill") 7 8 // 前面のカード画像を読み込み 9 let frontImage = UIImage(systemName: "circle") 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 // cardImageに画像を設定 15 cardImage.image = frontImage 16 } 17 18 @IBAction func openBtn(_ sender: Any) { 19 if cardImage.image == frontImage { 20 // 表示されている画像が前面の場合、裏面に返す 21 UIView.transition(with: cardImage, 22 duration: 1.0, 23 options: [.transitionFlipFromLeft], 24 animations: { 25 self.cardImage.image = self.backImage 26 }, 27 completion: nil) 28 } else { 29 // 裏面の場合 30 UIView.transition(with: cardImage, 31 duration: 1.0, 32 options: [.transitionFlipFromLeft], 33 animations: { 34 self.cardImage.image = self.frontImage 35 }, 36 completion: nil ) 37 } 38 } 39}

投稿2020/10/19 00:07

TsukubaDepot

総合スコア5086

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

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

muaik

2020/10/19 04:29

丁寧にご回答いただきありがとうございます。 animations:の使い方を分かっていませんでした。 実装してみたところカードフリップアニメーションが成功しました。 このアニメーションだけはどうしても実現したかったので、本当に助かりました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問