Могу ли я скрыть текст кнопки «Войти через Apple»? (он же ASAuthorizationAppleIDButton)?

Я использую вход с помощью Apple в своем приложении для iOS (SwiftUI).

В SwiftUI я могу использовать SignInWithAppleButton (https://morioh.com/p/524e0408008c ), на этой кнопке отображается логотип Apple и текст, который может быть «Войти с помощью Apple», «Зарегистрироваться с помощью Apple» или «Продолжить с Apple» в зависимости от выбранного типа кнопки (ASAuthorizationAppleIDButton.ButtonType).

Однако я бы хотел, чтобы размер кнопки был 120x60 (ШxВ). Если я просто изменю размер этой кнопки, текст все равно будет виден и отображается очень маленьким, значок Apple также изменится, и его нельзя будет увидеть, поэтому его нельзя будет использовать. Я хочу показать только значок Apple. Кажется, это разрешено руководящими принципами дизайна (https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/buttons/)

Как я могу сделать это в SwiftUI? Мне не удалось найти примеры пользовательских реализаций кнопок входа в систему Apple.

Спасибо за совет!


person ceyquem    schedule 20.01.2021    source источник
comment
можешь показать свой проверенный код   -  person Anbu.Karthik    schedule 20.01.2021
comment
Вам нужно будет загрузить предоставленные ресурсы значков Apple со страницы, на которую вы ссылаетесь, и использовать их для создания собственной настраиваемой кнопки.   -  person Paulw11    schedule 20.01.2021
comment
Код, который я пробовал, в точности совпадает с кодом этого блога: morioh.com/p/524e0408008c   -  person ceyquem    schedule 20.01.2021
comment
@ Paulw11 это то, что я хочу сделать, но как связать эту пользовательскую кнопку с функциями входа? Мне не удалось найти этот пример ни в документации, ни в Интернете.   -  person ceyquem    schedule 20.01.2021


Ответы (1)


Вы найдете только образец кода для основных частей программирования.

Если вы хотите настроить поведение / внешний вид, вам нужно будет создать свое собственное. Я предлагаю вам начать с init() для SignInWithAppleButton

init(SignInWithAppleButton.Label, onRequest: (ASAuthorizationAppleIDRequest) -> Void, onCompletion: ((Result<ASAuthorization, Error>) -> Void))

Затем создайте View и ViewModel: ASAuthorizationControllerDelegate, использующие этот инициализатор.

onRequest и onCompletion - это функциональные блоки / обработчики завершения, поэтому вам потребуется читайте об этом

Итак, вы знаете, как их использовать, когда вы handleAuthorizationAppleIDButtonPress (добавляете в запрос) и когда ваш ASAuthorizationControllerDelegate возвращает .success или .failure

Вашему View body нужен только Button, который вызывает thehandleAuthorizationAppleIDButtonPress() в вашем ViewModel (см. Пример кода Apple)

Вы можете найти образец кода Apple в документации Реализация аутентификации пользователя с помощью входа с Apple

Stackoverflow - это не служба написания кода, но когда у вас есть код, мы можем помочь вам с любыми проблемами.

person lorem ipsum    schedule 20.01.2021