Настройка DarkTheme никак не влияет на Braintree iOS v4 SDK - PullRequest
0 голосов
/ 14 января 2019

В документации четко сказано, что это можно сделать, легко и просто: https://developers.braintreepayments.com/guides/drop-in/customization/ios/v4#themes

Я действительно могу настроить primaryTextColor на красный.

Вот скриншот, который показывает, что красный работает, но не darkTheme: enter image description here

А вот мой код в моем UIViewController:

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        showDropIn(clientTokenOrTokenizationKey: clientToken)
    }

    func showDropIn(clientTokenOrTokenizationKey: String) {
        BTUIKAppearance.darkTheme()
        BTUIKAppearance.sharedInstance().primaryTextColor = UIColor.red

        let request =  BTDropInRequest()
        request.vaultManager = true

        let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
        { (controller, result, error) in
            if (error != nil) {
                print("ERROR")
            } else if (result?.isCancelled == true) {
                print("CANCELLED")
            } else if let result = result {
                // Use the BTDropInResult properties to update your UI
                // result.paymentOptionType
                // result.paymentMethod
                // result.paymentIcon
                // result.paymentDescription
            }
            controller.dismiss(animated: true, completion: nil)
        }
        self.present(dropIn!, animated: true, completion: nil)
    }

1 Ответ

0 голосов
/ 14 января 2019

Так что документация Брэйнтри по теме немного не подходит для формулировки IMO.

Инструкция вводит меня в заблуждение: «Чтобы использовать темную тему вместо этого, вызовите этот метод перед инициализацией Drop-in». Тем не менее, вы должны инициализировать или создать инсталляцию перед установкой darkTheme.

Инструкция может быть лучше читать: «Чтобы использовать темную тему вместо этого, вызовите этот метод перед представлением Drop-in»

Вот мой рабочий код:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    showDropIn(clientTokenOrTokenizationKey: clientToken)
}

func showDropIn(clientTokenOrTokenizationKey: String) {
    let request =  BTDropInRequest()
    request.vaultManager = true

    dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
    { (controller, result, error) in
        if (error != nil) {
            print("ERROR")
        } else if (result?.isCancelled == true) {
            print("CANCELLED")
        } else if let result = result {
            // Use the BTDropInResult properties to update your UI
            // result.paymentOptionType
            // result.paymentMethod
            // result.paymentIcon
            // result.paymentDescription
        }
        controller.dismiss(animated: true, completion: nil)
    }

    BTUIKAppearance.darkTheme()
    BTUIKAppearance.sharedInstance()?.primaryTextColor = UIColor.lightGray
    self.present(dropIn!, animated: true, completion: nil)
}
...