swift “FBLoginButton”符合“视图”

yrdbyhpb  于 2022-12-17  发布在  Swift
关注(0)|答案(2)|浏览(154)

我尝试创建一个Facebook按钮,但当我在VStack中调用它时,它显示:'Referencing initializer 'init(alignment:spacing:content:)' on 'VStack' requires that 'FBLoginButton' conform to 'View'',那么为什么它不工作,因为FBLoginButton毕竟是一个按钮.这里的代码:

struct ContentView: View {
    var body: some View {
        VStack(alignment: .center) {
            FBLoginButton(frame: CGRectMake(0, 0, 100, 100), permissions: ["email"])
        }
    }
}
qhhrdooz

qhhrdooz1#

首先需要创建实现UIViewRepresentable协议的类。

import FBSDKLoginKit
import SwiftUI
struct FacebookLoginButton: UIViewRepresentable {
    typealias UIViewType = FBLoginButton
    
    func makeUIView(context: Context) -> UIViewType {
        FBLoginButton()
    }

    func updateUIView(_ uiView: FBLoginButton, context: Context) { }
}

经过这一切FacebookLoginButton可以在SwiftUI中使用如下:

var body: some View {
    FacebookLoginButton()
}
kyxcudwk

kyxcudwk2#

Facebook SDK仍然使用UIKit,FBLoginButton是来自UIKit的UIView,而不是来自SwiftUI的View”。
你需要使用loginmanger来完成大部分的工作,并将其嵌入到swiftui按钮中。
检查下面的链接,这将是有帮助的。https://gist.github.com/zydeico/8bb9c772e944d1490335e1615aaf4960

相关问题