2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GIDSignInButton の見た目と状態のカスタマイズ - GoogleSignInSwift の場合 -

Posted at

前回、以下の記事を書いたのですが、書いた後に GoogleSignInSwift という Product があることを認識しました。

GoogleSignIn は Objective-C x UIKit で実装されているのに対し、
GoogleSignInSwift は Swift x SwiftUI で実装されています。

また、カスタマイズのためのプロパティも後者の方が1個増えてたので、GoogleSignInSwift 版の記事も書いてみるか、と思い立ちました。

環境

  • Xcode 13.4.1
  • Firebase 9.0.0
  • GoogleSignin 6.0.0 の GoogleSignInSwift(GoogleSignではない方
  • iPhone 13 (15.5) Simulator:ライトモード

カスタマイズ可能な部分

GIDSignInButtonクラスのコードを確認したところ、そのクラスから提供されているカスタマイズ可能なプロパティは、以下3つです。(プロパティ名は違えど、最初の2つは GoogleSignIn と同じで、 最後が新しく追加されたもの)

  • GoogleSignInButtonStyle:レイアウトのスタイル
  • GoogleSignInButtonColorScheme:カラースキーム
  • GoogleSignInButtonState:状態 → 🆕

image.png

レイアウトのスタイル

現時点で定義されているタイプは、以下の3つになります。(GoogleSignIn の Product と変わらない)

  • standard:表示テキストは「Sign in」
  • wide:表示テキストは「Sign in with Google」
  • icon:アイコンのみ

image.png

standard wide icon
Simulator Screen Shot - iPhone 13 - 2022-08-21 at 18.14.57.png Simulator Screen Shot - iPhone 13 - 2022-08-21 at 18.15.55.png Simulator Screen Shot - iPhone 13 - 2022-08-21 at 18.16.43.png

カラースキーム

現時点で定義されているタイプは、以下の2つになります。(GoogleSignIn の Product と変わらない)

  • dark:ダーク →という名前だけど色は青
  • light:ライト

image.png

dark light
Simulator Screen Shot - iPhone 13 - 2022-08-21 at 18.18.22.png Simulator Screen Shot - iPhone 13 - 2022-08-21 at 18.19.36.png

状態

これは GoogleSignInSwift になって新しく追加されたプロパティです。
現時点で定義されているタイプは、以下の3つになります。

以下はGoogleSignInButtonColorScheme.lightだったときの話になります。
想像できるとは思うのですが、ボタンのUIは、GoogleSignInButtonStateGoogleSignInButtonColorSchemeの組み合わせによって変わりますので、darkの時はまた違ったUIになります。ただボタンが押下可能か、といったアクション部分は変わりないのではと思います。(ちゃんと検証したわけではないですが、、)

  • normal:白いUIで、押下可能でGoogleでサインインするためのアラート画面が表示される
  • disabled:ボタン押下不可
  • pressed:押された状態のUI(薄いグレー)になっているが、押下可能でGoogleでサインインするためのアラート画面が表示される

image.png

normal disabled pressed
app.gif app app

コード

GoogleSignInSwift の場合は、UIViewRepresentable に準拠した実装は不要になります。

import SwiftUI
import GoogleSignInSwift

struct SignInView: View {
    var body: some View {
        GoogleSignInButton(scheme: .light, style: .standard, state: .normal) {
            // do something
        }
    }
}

おわりに

簡単すぎるせいかわからないですが、あまり GoogleSignInSwiftについての記事が見当たらなかったので、書いてみました。

どなたかのお役に立てば幸いです。そして何か間違い等ありましたら、ご指摘いただけますと嬉しいです。 :blush:

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?