具体来说,我将facebook的登录按钮编码到我的视图控制器文件中。但它没有出现在故事板中。我知道如何在故事板中创建一个按钮,然后通过右键单击拖动连接代码,但是当我尝试将其连接到两个并创建我的IBOutlet时,我似乎只是创建了两个不同的登录按钮。
如何让facebook登录按钮显示在故事板中?
import UIKit
import FBSDKCoreKit
import FBSDKLoginKit
class ViewController: UIViewController, FBSDKLoginButtonDelegate
{
override func viewDidLoad() {
super.viewDidLoad()
if (FBSDKAccessToken.currentAccessToken() == nil)
{
print("Not logged in..")
}
else
{
print("Logged in..")
}
let loginButton = FBSDKLoginButton()
loginButton.readPermissions = ["public_profile", "email", "user_friends"]
loginButton.center = self.view.center
loginButton.delegate = self
self.view.addSubview(loginButton)
}
答案 0 :(得分:0)
在这种情况下,您无法在故事板中看到该按钮。 FBSDKLoginButton是Facebook提供的自定义按钮。通过使用FBSDKLoginButton,您可以绕过一些额外的代码。可以在故事板中添加自定义登录按钮,并使用按钮的连接操作中的Facebook开发人员文档进行编码。
答案 1 :(得分:0)
Dan L是对的。您只能操纵和查看通过故事板本身添加的Storyboard中的对象。但是,您可以通过在View Debugger中查看,以编程方式向UIButton
添加ViewController
。这样,您可以旋转,放大和聚焦可见屏幕上的任何元素,甚至是Facebook按钮。但是这不允许您操纵视图调试器中的对象。大多数情况下,您希望这样做来设置与屏幕上其他内容相关的自动布局约束。你实际上可以仍然这样做:但它需要一点想象力。
1)您必须在视图控制器的故事板(IBOutlets
)中选择要将按钮锚定到的元素。
2) 在代码中,精神上可视化您希望UIButton
去的地方。对于程序按钮的每个方向,将NSLayoutConstraints添加到周围的视图中。
UIView *leftView = self.viewToTheLeftOfWhereIWantTheButtonToGo; //IBOutlet. Remember to list here all of the surrounding views like so
UIView *button = self.theFacebookButton; //IBOutlet
//Top | do for each direction
[container addConstraint:[NSLayoutConstraint constraintWithItem:button
attribute:NSLayoutAttributeLeft //button's Left
relatedBy:NSLayoutRelationEqual
toItem:leftView
attribute:NSLayoutAttributeRight //leftView's Right
multiplier:1.0
constant:kFacebookButtonPadding]]; //some CGFloat you define
// And do this for Left, Bottom, and Right also.
3)由于所有子视图(包括Facebook按钮)都是self.view
的子视图,因此请告诉主视图布置其子视图。
[self.view layoutIfNeeded];
4)根据您的需要调整它,构建并运行,并在View Debugger中检查结果。这是使用故事板的下一个最佳选择。