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

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

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

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

Q&A

解決済

1回答

1497閲覧

【swift】UIViewAnimationCurveの設定を教えてください。

iphonex

総合スコア30

Swift

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

0グッド

0クリップ

投稿2017/01/07 23:53

以下のコードに、UIViewAnimationCurveの設定をしたいのですが、
UIViewAnimationCurveEaseInOut、UIViewAnimationCurveLinearを
shop1,shop2それぞれに設定するには、どのように書けば動くようになるでしょうか。

swift3

1 override func viewWillAppear(_ animated: Bool) { 2 super.viewWillAppear(animated) 3 4 shop1.center.x += view.bounds.height 5 shop2.center.x += view.bounds.height 6 7 8 } 9 10 override func viewDidAppear(_ animated: Bool) { 11 super.viewDidAppear(animated) 12 13 UIView.animate(withDuration: 1.5, animations: { 14 15 self.shop1.center.x -= self.view.bounds.height 16 self.shop2.center.x -= self.view.bounds.height 17 18 }, completion: nil) 19 20 21 } 22

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

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

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

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

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

guest

回答1

0

ベストアンサー

それぞれにoptionを設定するには以下

swift

1override func viewDidAppear(_ animated: Bool) { 2 super.viewDidAppear(animated) 3 4 UIView.animate(withDuration: 1.5, delay: 0.0, options: .curveEaseInOut, animations: { 5 6 self.shop1.center.x -= self.view.bounds.height 7 }, completion: nil) 8 9 UIView.animate(withDuration: 1.5, delay: 0.0, options: .curveLinear, animations: { 10 11 self.shop2.center.x -= self.view.bounds.height 12 }, completion: nil) 13}

参考URL: iOS10からのAnimationがいい感じ!

投稿2017/01/08 00:00

編集2017/01/08 00:31
_Kentarou

総合スコア8490

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

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

iphonex

2017/01/08 01:33

すみません。追加で以下を教えてください。 以下のコードで2枚の画像が反転して入れ替わるのですが、 1秒おきに自動反転するには、どうすればいいでしょうか。 ``` class ViewController: UIViewController { var baseView:UIImageView!//アニメーションのベースとなるUIImageView var animeView1:UIImageView!//アニメーションするUIImageView1 var animeView2:UIImageView!//アニメーションするUIImageView2 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. drawanimeView() } //アニメ用UIImageViewの描画 func drawanimeView() { //UIImageViewの初期の大きさ let _viewSize:CGPoint = CGPoint(x: 200, y: 300) let _viewStart:CGPoint = CGPoint(x: (self.view.frame.size.width - _viewSize.x) / 2, y: (self.view.frame.size.height - _viewSize.y) / 2) //UIImageViewの初期位置 var rect:CGRect = CGRect(x: _viewStart.x, y: _viewStart.y, width: _viewSize.x, height: _viewSize.y) //アニメーショをするUIImageViewの位置と大きさ baseView = drawView("", rect: rect, borderColor: UIColor.clear, borderwidth: 0, corner: 0, tag: 10) //アニメーションするUIImageViewをのせるUIImageView rect = CGRect(x: 0, y: 0, width: _viewSize.x, height: _viewSize.y) //アニメーションするUIImageViewのbaseViewに対する相対位置(baseViewと同じ大きさ) animeView1 = drawView("neko.png", rect: rect, borderColor: UIColor.clear, borderwidth: 0, corner: 0, tag: 1) //アニメーション用UIImageVie animeView1.backgroundColor = UIColor.white animeView2 = drawView("neko2.png", rect: rect, borderColor: UIColor.clear, borderwidth: 0, corner: 0, tag: 2) //アニメーション用UIImageView self.view .addSubview(baseView)//baseViewをselfViewにのせる baseView .addSubview(animeView2)//アニメーション用のUIImageViewをbaseViewにのせる baseView .addSubview(animeView1) baseView.isHidden = false baseView.isUserInteractionEnabled = true animeView1.isHidden = false animeView1.isUserInteractionEnabled = true animeView2.isHidden = true } //タッチイベントが発生したら override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let touche = touches.first as UITouch! let tag = touche!.view!.tag//タッチされたUIImageViewのtagを取得 print("tag=\(tag)") if tag == 1 {//タッチされたのがanimeView1なら let duration:TimeInterval = 2.0//アニメーションにかかる時間(s) let opt = UIViewAnimationOptions.transitionFlipFromRight flip(opt, duration: duration) } } //フリップアニメーション関数 func flip(_ opt:UIViewAnimationOptions, duration:TimeInterval) { let views = (frontView: animeView1, backView: animeView2) UIView.transition( with: baseView, duration: 1.0, options: opt, animations: { views.frontView.isHidden = true views.backView.isHidden = false }, completion: { finished in self.timeout(2.0, next: "animeend")// アニメーション終了後の処理 }) } //アニメーション終了後の処理 func animeend() { for i in 1...2 { let view:UIImageView = self.view .viewWithTag(i) as! UIImageView view.removeFromSuperview() } drawanimeView() } //UIIMageViewの描画 func drawView(_ name:String, rect:CGRect, borderColor:UIColor, borderwidth:CGFloat, corner:CGFloat, tag:Int) -> UIImageView { let image:UIImage? = UIImage(named: name)//イメージを取得 let view = UIImageView(image: image)//viewをイメージで定義 view.frame = rect//位置と大きさ view.layer.borderColor = borderColor.cgColor//枠の色 view.layer.borderWidth = borderwidth//枠の太さ view.layer.cornerRadius = corner//角丸の半径 view.clipsToBounds = true//角丸の許可 view.tag = tag return view } //遅延動作 func timeout(_ time:TimeInterval, next:String){//time:遅延時間 next:遅延後に呼び出す関数名 let delay = time * Double(NSEC_PER_SEC) let time = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC) DispatchQueue.main.asyncAfter(deadline: time, execute: { Thread.detachNewThreadSelector(Selector(next), toTarget:self, with: nil) }) } } ```
_Kentarou

2017/01/08 01:55

optionを以下の様にしてください。 let opt: UIViewAnimationOptions = [.transitionFlipFromRight, .repeat]
iphonex

2017/01/08 02:37

タップ無しで自動で表示を切り替えるようにしたいです。 以下のような表示にするには、どうすればいいでしょうか。 画像1を表示→10秒そのまま→反転して画像2を表示→10秒そのまま→反転して画像1を表示
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問