回答編集履歴

2

改行位置調整

2017/05/19 02:23

投稿

TakeOne
TakeOne

スコア6299

test CHANGED
@@ -182,19 +182,15 @@
182
182
 
183
183
 
184
184
 
185
- ポイントは、タイマーはviewDidLoadではなくviewDidAppearのタイミングで開始することと、
186
-
187
- rotateメソッドはviewDidAppearの外で定義することです(でないとタイマーから呼び出せません)。
185
+ ポイントは、タイマーは`viewDidLoad`ではなく`viewDidAppear`のタイミングで開始することと、rotateメソッドは`viewDidAppear`の外で定義することです(でないとタイマーから呼び出せません)。
188
-
189
- そうした上で、タイマー開始直後に`timer.fire()`を使えば、初回だけすぐにタイムアウトさせて、
190
-
191
- すぐにアニメーションを開始することができます。
192
186
 
193
187
 
194
188
 
195
- れとここから別の画面遷移るなら、その時にタイーを止め必要ありますので、
189
+ うした上でタイマー開始直後`timer.fire()`を使えば、初回だけにタイムアウトさせて、すぐにアニメション開始すことできます
196
190
 
191
+
192
+
197
- 念のためにviewWillDisappearでタイマーを止める処理も入れておきました。
193
+ それと、ここから別の画面に遷移するなら、その時にタイマーを止める必要がありますので、念のために`viewWillDisappear`でタイマーを止める処理も入れておきました。
198
194
 
199
195
 
200
196
 

1

アニメーションをリピートさせる場合を追加

2017/05/19 02:23

投稿

TakeOne
TakeOne

スコア6299

test CHANGED
@@ -101,3 +101,101 @@
101
101
 
102
102
 
103
103
  これで十分だと思います。
104
+
105
+
106
+
107
+ ---
108
+
109
+ **(5/19 11:15追記)**
110
+
111
+
112
+
113
+ リピートタイマーを使ってアニメーションを繰り返すのであれば、
114
+
115
+ 以下のようにすればいいです。
116
+
117
+
118
+
119
+ (例)
120
+
121
+ ``` swift
122
+
123
+ class ViewController: UIViewController {
124
+
125
+
126
+
127
+ @IBOutlet weak var button: UIButton!
128
+
129
+
130
+
131
+ // タイマー
132
+
133
+ var timer = Timer()
134
+
135
+
136
+
137
+ override func viewDidAppear(_ animated: Bool) {
138
+
139
+ super.viewDidAppear(animated)
140
+
141
+ // リピートタイマー開始
142
+
143
+ timer = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(self.rotate), userInfo: nil, repeats: true)
144
+
145
+ // 初回だけすぐにタイムアウトさせる
146
+
147
+ timer.fire()
148
+
149
+ }
150
+
151
+
152
+
153
+ override func viewWillDisappear(_ animated: Bool) {
154
+
155
+ super.viewWillDisappear(animated)
156
+
157
+ timer.invalidate()
158
+
159
+ }
160
+
161
+
162
+
163
+ func rotate() {
164
+
165
+ self.button.transform = CGAffineTransform(rotationAngle: 0)
166
+
167
+ // アニメーション開始
168
+
169
+ UIView.animate(withDuration: 6.0, delay: 0.0, options: [.curveEaseInOut], animations: {
170
+
171
+ // 回転の処理
172
+
173
+ self.button.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
174
+
175
+ })
176
+
177
+ }
178
+
179
+ }
180
+
181
+ ```
182
+
183
+
184
+
185
+ ポイントは、タイマーはviewDidLoadではなくviewDidAppearのタイミングで開始することと、
186
+
187
+ rotateメソッドはviewDidAppearの外で定義することです(でないとタイマーから呼び出せません)。
188
+
189
+ そうした上で、タイマー開始直後に`timer.fire()`を使えば、初回だけすぐにタイムアウトさせて、
190
+
191
+ すぐにアニメーションを開始することができます。
192
+
193
+
194
+
195
+ それと、ここから別の画面に遷移するなら、その時にタイマーを止める必要がありますので、
196
+
197
+ 念のためにviewWillDisappearでタイマーを止める処理も入れておきました。
198
+
199
+
200
+
201
+