简体   繁体   English

堆栈视图中的自定义 Facebook 按钮

[英]Custom Facebook button inside Stack View

I'm creating a login page where I want to have a Facebook login button.我正在创建一个登录页面,我想要一个 Facebook 登录按钮。 I have a stack view where it I want the button to be.我有一个堆栈视图,我想要按钮所在的位置。 How do I insert the button into the stack view and customize the button to setUpElements() ?如何将按钮插入堆栈视图并将按钮自定义为setUpElements() I currently have a normal UIButton where I want the facebook button to be, designed as how I want the FBButton to be designed.我目前有一个普通的 UIButton,我希望 facebook 按钮位于其中,设计为我希望 FBButton 的设计方式。 It's just a placeholder for the FBButton right now.它现在只是 FBButton 的占位符。 Pretty much, I just want to customize the facebook button to the specs of setUpElements() and place it inside of the stack view (under the “Sign Up Apple Button”. I've attached a screenshot of how the stackview is designed, thanks for any help!几乎,我只想根据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
    }
}

查看控制器截图

If you want to add a button or view to UIStackView programmatically you need to use this function stackView.insertArrangedSubview(button, at: 3)如果你想以编程方式向 UIStackView 添加按钮或视图,你需要使用这个 function stackView.insertArrangedSubview(button, at: 3)

Edit编辑

you can create a function where you want to have facebook login implementation something like this:你可以创建一个 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 ...
        }
    }
}

then you add this function as target action to your custom button let's suppose that you want to use signInFacebookbutton you could place the following code inside viewDidLoad or inside setUpElements() :然后将此 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