teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

`.allowUserInteraction`を期待通り機能させるために必要な補足情報を追記

2021/09/30 20:29

投稿

退会済みユーザー
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
  ```