回答編集履歴
1
`.allowUserInteraction`を期待通り機能させるために必要な補足情報を追記
answer
CHANGED
@@ -29,6 +29,8 @@
|
|
29
29
|
|
30
30
|
ただし、通常は元々のビューの `alpha` が `1.0` とは限らないので、そもそもアニメーション開始時に `self.alpha = 1.0` としているのが若干おかしいです。元の不透明度を取得し、アニメーション終了時に戻すようにしてはどうでしょうか。
|
31
31
|
|
32
|
+
また、もしアニメーション中のビューそのものにタッチしてアニメーションを止めるような設計の場合、`alpha` 値が `0` に近いと `.allowUserInteraction` を指定していても反応しませんので、`self.alpha` の値を `0.02` などにしたほうが良いです(しきい値はよく分かりません。`0.01` だと反応しなかったりします)。
|
33
|
+
|
32
34
|
```swift
|
33
35
|
extension UIView {
|
34
36
|
func gladAnime() {
|
@@ -37,7 +39,7 @@
|
|
37
39
|
withDuration: 0.8,
|
38
40
|
delay: 0.0,
|
39
41
|
options: [.allowUserInteraction, .curveEaseInOut, .autoreverse, .repeat],
|
40
|
-
animations: { self.alpha = 0 }, completion: { _ in self.alpha = sourceAlpha })
|
42
|
+
animations: { self.alpha = 0.02 }, completion: { _ in self.alpha = sourceAlpha })
|
41
43
|
}
|
42
44
|
}
|
43
45
|
```
|