web-dev-qa-db-ja.com

Swift(HUGE_VALF)で永遠にアニメーションを繰り返す方法?

ドキュメントによると、CABasicAnimationを永久に繰り返す方法は、repeatCountHUGE_VALFに設定することです。

ただし、Swiftでは、HUGE_VALFによりコンパイルエラーが発生します。 Swiftは標準ライブラリ(またはこの定数が存在する場所)について知らないようです。

私は今何をしますか?

38
matt

repeatCountを_Float.infinity_に設定します。これはコンパイルして動作します。

いずれにせよ、_HUGE_VALF_はどの場合でもレガシー値でした。

それでも、これらの数値定数名がSwiftに表示されないことは少し驚きです。ブリッジングヘッダーに_<stdlib.h>_をインポートしようとしましたが、役に立ちませんでした。


しかし、今はマーティンRの答えをご覧ください。私が答えを投稿したときから、Appleは優先答えを明示的に述べています:_.greatestFiniteMagnitude_を使用してください。_.infinity_とほぼ同じですが、完全ではありません!

82
matt

repeatCount プロパティの CAMediaTiming プロパティの現在のドキュメントには、

このプロパティを greatestFiniteMagnitude に設定すると、アニメーションが永久に繰り返されます。

そして、それは問題なくコンパイルされます:

let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude

HUGE_VALFは、Swiftにインポートされません。これは、<math.h>

#   define    HUGE_VALF    __builtin_huge_valf()
2
Martin R

「巨大」値を使用します。 build_in読み取り専用変数です。

0
david