XCodeでSwiftUIを使用してiPhone用のアプリを書いています。ビューの1つには、ボタンが押されるたびにテキストを変更するテキストラベルがあります。ビュー全体はスプリングアニメーションで表示されるため、ボタンを使用してテキストを変更すると、アニメーションで変更されます。アニメーションはうまく機能しますが、アニメーション中はテキストラベルがテキストの最後に不要な省略記号を追加します。私は以下を使用して省略記号を削除しようとしました:
Text("text")
.truncationMode(nil)
ただし、これによりエラーが発生します。テキストラベルの「...」をオフにする方法はありますか?そうでない場合、ビュー全体がアニメーション化されているため、他のテキストに影響を与えずに、そのテキストラベルのみのアニメーションをオフにする方法はありますか?
Text("text").animation(nil)
を使用して、アニメーションをオフにすることができます。
または、他のアニメーションを選択して...
Text("text").animation(.spring(response: 0.0, dampingFraction:0.2))
minimumScaleFactor(_ factor: CGFloat)
を使用できます。テキストは、因子の値に従って縮小します。
たとえば、フォントサイズが10で係数が0.4の場合、テキストフォントサイズは必要に応じて4まで小さくすることができます。
Text("text")
.minimumScaleFactor(0.1)
これを試して:
struct UnAnimatedText: View {
private let text: String
init(_ text: String) {
self.text = text
}
var body: some View {
Button(action: {
}) {
Text(text)
.frame(maxWidth: .infinity)
.animation(nil)
}
.disabled(true)
}
}
テキストはアニメーションなしで変化しますが、UnAnimatedTextのフレームはアニメーション付きで変化します。
.frame(maxWidth:.infinity)はオプションです。主なアイデアは、Buttonでラップすることです