2016-12-12 7 views
0

私はログイン用にSwift 3とFacebook SDKを使用してiOSアプリケーションを開発しています。 私はまだiOS開発の初心者です。特に、すべてのUI関連のもの(アンドロイド開発から来ています)Swift Facebook SDKログインボタンの位置

Facebook SDKで提供されているLoginButtonを使用しています。 。 ViewControllerの下に移動し、可能であればストーリーボードを通じて作成するレイアウトに配置したいと考えています。 (私がしたい場所を正確に表示されます)

Swift Facebook SDK Login

私はFacebookの開発者に対し文書を確認し、私はそれLoginButtonの特性を提供するもの、そしてどのようにその位置を変更するを見つけることができません。カスタムLoginButtonを作成することも可能ですが、ボタンを移動してその物理的な外観を変更したくないので、必要ではないと私は思います。

let loginButton = LoginButton(readPermissions: [ .publicProfile , .custom("user_birthday")]) 

loginButton.center = view.center 
loginButton.delegate = self 

view.addSubview(loginButton) 

はEDIT:リチウムの答えに

おかげで、ここで私がやったことです:70の余裕を持って、私のViewControllerの下部にあるボタンを中心に説明する

let loginButton = LoginButton(readPermissions: [ .publicProfile , .custom("user_birthday")]) 
let newCenter = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height - 70) 
loginButton.center = newCenter 
loginButton.delegate = self 
view.addSubview(loginButton) 

答えて

1
loginButton.center = view.center 

の代わりに任意のCGPointを使用できます。ここにview.center。例えば 、(制約を使用せずに)、画面の下部には、このボタンを置くための

let newCenter = CGPoint(15, 20) 
loginButton.center = newCenter 

非常に怠惰なアプローチ:

let screenSize:CGRect = UIScreen.main.bounds 
let screenHeight = screenSize.height //real screen height 
//let's suppose we want to have 10 points bottom margin 
let newCenterY = screenHeight - loginButton.frame.height - 10 
let newCenter = CGPoint(view.center.x, newCenterY) 
loginButton.center = newCenter 

私は今、この権利を確認することはできませんが、私はそれを信じていますloginButton.frameも(コード内のレイアウト制約と同様に)機能するはずです。

1

UImageView

import UIKit 
import FBSDKLoginKit 

class RootViewController: UIViewController,FBSDKLoginButtonDelegate { 
    // here your custom UIButton outlet refrence and make sure in storyboard u can give UIButton class name to FBSDKLoginButton. 
    @IBOutlet var btnFacebook: FBSDKLoginButton! 

    //MARK:- UIView life cycle 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     self.configureFacebook() 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
    } 

    override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 
    } 

    //MARK:- Instance method 

    func configureFacebook() 
    { 
     btnFacebook.readPermissions = \["public_profile", "email", "user_friends"\]; 
     btnFacebook.delegate = self 
     btnFacebook.backgroundColor = UIColor.clear; 
    } 

    /** 
    Sent to the delegate when the button was used to login. 
    - Parameter loginButton: the sender 
    - Parameter result: The results of the login 
    - Parameter error: The error (if any) from the login 
    */ 
    public func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 

     if ((error) != nil) { 
      // Process error 
      print("Error! : \(error.localizedDescription)") 
      return 

     } else if result.isCancelled { 
      // Handle cancellations 
      print("Success! : user cancel login request") 
      return 
     } else { 
      let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: \["fields" : "id, email, name,picture.type(large)"\]) 
      graphRequest.start(completionHandler: { (connection, result, error) -> Void in 
       if ((error) != nil) { 
        print("Error: \(error)") 
       } else { 
        // Do work in app. 
        let dataDict:NSDictionary = result as! NSDictionary 
        if let token = FBSDKAccessToken.current().tokenString { 
         print("tocken: \(token)") 

         let userDefult = UserDefaults.standard 
         userDefult.setValue(token, forKey: "access_tocken") 
         userDefult.synchronize() 
        } 
        if let user : NSString = dataDict.object(forKey: "name") as! NSString? { 
         print("user: \(user)") 
         self.lblName.text = "Welcome, \(user)" 
        } 
        if let id : NSString = dataDict.object(forKey: "id") as? NSString { 
         print("id: \(id)") 
        } 
        if let email : NSString = (result! as AnyObject).value(forKey: "email") as? NSString { 
         print("email: \(email)") 
        } 

        if let pictureData:NSDictionary = dataDict.object(forKey: "picture") as? NSDictionary{ 

         if let data:NSDictionary = pictureData.object(forKey: "data") as? NSDictionary{ 

          if let strPictureURL: String = data.object(forKey: "url") as? String{ 

           self.ivUserProfileImage.image = UIImage(data: NSData(contentsOf: NSURL(string: strPictureURL)! as URL)! as Data) 
          } 
         } 
        } 

       } 
      }) 
     } 
    } 

    /** 
    Sent to the delegate when the button was used to logout. 
    - Parameter loginButton: The button that was clicked. 
    */ 
    public func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!){ 

     let loginManager: FBSDKLoginManager = FBSDKLoginManager() 
     loginManager.logOut() 
     ivUserProfileImage.image = nil 
     lblName.text = "" 
    } 
} 
+1

を自分のFacebookのログインボタンを追加FBSDKLoginButtonにカスタムUIButtonクラスを与えると出口を接続する場所をaddSubview(loginButtonは)//これはあります。あなたはUIの設定としてFacebookのログインボタンを手に入れます –

+0

ありがとうございました!それは私のために使われています。 – Raja

0

デフォルトFacebookのログインボタンを配置するために探しているなら、あなたがする必要があるのは以下の通りです:

  1. 空のビューを作成し、その制約を設定 @IBOutlet weak var FBLoginView:UIView!

  2. Attach new view to controller

  3. はあなたのビューにFacebookのログインボタンを追加するには、コントローラにビューを接続します。
    loginButton = LoginButtonてみましょう(readPermissions:[.publicProfile、.userFriends、.email])//あなたは既にこの
    self.FBLoginViewを行っていない場合。あなたは、あなたFacebookでログインするカスタムUIButtonを使用することができ、空のビューに

関連する問題