SwiftUISignInWithAppleButton
のsignInWithAppleButtonStyle
. ユーザーの現在のスキームに基づいて、または変更された場合にボタンの色を変更しようとしています。これは iOS 14 と SwiftUI です。
@Environment(\.colorScheme) var currentScheme
@State var appleButtonWhite = false
VStack{
SignInWithAppleButton(
.signUp,
onRequest: { request in
request.requestedScopes = [.fullName, .email]
},
onCompletion: { result in
switch result {
case .success (let authResults):
print("Authorization successful.")
case .failure (let error):
print("Authorization failed: " + error.localizedDescription)
}
}
)
.frame(minWidth: 0, maxWidth: .infinity)
.signInWithAppleButtonStyle(appleButtonWhite ? .white : .black)
}
.onChange(of: currentScheme, perform: { (scheme) in
if scheme == .light
{
appleButtonWhite = false
}
else
{
appleButtonWhite = true
}
})
値を変更するappleButtonWhite
と、状態が変化しているため、ビューが適切にレンダリングされます。ボタンをデバッグすると、正しい appleButtonWhite 値が表示されますが、何らかの理由でスタイルが変更されません。理由がわかりません。通常のボタンを使用してコードに多くのスタイル変更を加えましたが、さまざまな状態に基づいて正しく機能します。Apple が変更されない理由はありますか?