簡體   English   中英

堆棧視圖中的自定義 Facebook 按鈕

[英]Custom Facebook button inside Stack View

我正在創建一個登錄頁面,我想要一個 Facebook 登錄按鈕。 我有一個堆棧視圖,我想要按鈕所在的位置。 如何將按鈕插入堆棧視圖並將按鈕自定義為setUpElements() 我目前有一個普通的 UIButton,我希望 facebook 按鈕位於其中,設計為我希望 FBButton 的設計方式。 它現在只是 FBButton 的占位符。 幾乎,我只想根據setUpElements()的規范自定義 facebook 按鈕,並將其放置在堆棧視圖中(在“注冊 Apple 按鈕”下)。我附上了堆棧視圖設計的屏幕截圖,謝謝任何幫助!

import UIKit
import FirebaseAuth
import FBSDKLoginKit

class WelcomeViewController: UIViewController {
    @IBOutlet weak var stackView: UIStackView! 
    @IBOutlet weak var signInAppleButton: UIButton!
    @IBOutlet weak var signInFacebookButton: UIButton!
    
    let facebookLoginButton = FBLoginButton()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        setUpElements()
    }

    
    func setUpElements() {
        let button = signInFacebookButton
        button?.layer.borderWidth = 2
        button?.layer.borderColor = UIColor.init(red: 93/255, green: 129/255, blue: 140/255, alpha: 1).cgColor
        button?.layer.cornerRadius = 20.0
        button?.tintColor = UIColor.black
    }
}

查看控制器截圖

如果你想以編程方式向 UIStackView 添加按鈕或視圖,你需要使用這個 function stackView.insertArrangedSubview(button, at: 3)

編輯

你可以創建一個 function ,你想要 facebook 登錄實現是這樣的:

@objc func facebookLoginButtonAction() {
    let loginManager = LoginManager()
    loginManager.logIn(permissions: [], from: self) { (result, error) in
        
        // Check for error
        guard error == nil else {
            // Error occurred
            print(error!.localizedDescription)
            return
        }
        
        // Check for cancel
        guard let result = result, !result.isCancelled else {
            print("User cancelled login")
            return
        }
        
        // Successfully logged in
        // do your business logic code here...
        
        // in case if you would like to load user facebook profile
        Profile.loadCurrentProfile { (profile, error) in
            // update UI ...
        }
    }
}

然后將此 function 作為目標操作添加到自定義按鈕讓我們假設您想要使用signInFacebookbutton您可以將以下代碼放在viewDidLoadsetUpElements()中:

signInFacebookbutton.addTarget(self, action: #selector(facebookLoginButtonAction), for: .touchUpInside)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM