我可以在 iOS 中自定义 Twitter 工具包的登录按钮吗?

Can I customize Login button of Twitter kit in iOS?

我已经下载了一个 Twitter 工具包框架并添加了使用 Twitter 登录的代码。但是,我不希望登录按钮看起来像那样。我想要一个用于登录的自定义按钮。我可以这样做吗?我只想使用这个框架,因为它也可以利用 iOS 系统帐户。

是的,您可以自定义您的 Twitter 登录按钮。

只需将您的 UIButton 添加到故事板所需的视图控制器中。 Select 它并打开身份检查器,现在在 Class 文本字段中,输入 "TWTRLogInButton" 之后创建一个 属性.

你将创建这样的东西:-

@property (nonatomic,strong) IBOutlet TWTRLogInButton *customTwitterButton;

之后您可以使用它或在您的 viewDidLoad 方法中实现它,如下所示:-

self.customTwitterButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
    // do operations as per your wish
}];

根据 document :

在您的按钮中添加代码:

Objective-C

[[Twitter sharedInstance] logInWithCompletion:^
            (TWTRSession *session, NSError *error) {
  if (session) {
      NSLog(@"signed in as %@", [session userName]);
  } else {
      NSLog(@"error: %@", [error localizedDescription]);
  }
}];

Swift

Twitter.sharedInstance().logInWithCompletion {
                (session, error) -> Void in
    if (session != nil) {
        println("signed in as \(session.userName)");
    } else {
        println("error: \(error.localizedDescription)");
    }
}

Twitter 在文档中提供了单独的登录方法。在 xib 或故事板中创建您的自定义按钮,为其提供一个选择器并添加一个用于 Twitter 登录的方法。这是一个例子:

- (IBAction)btnTwitterLogin_pressed:(id)sender
{
    [[Twitter sharedInstance] logInWithCompletion:^
     (TWTRSession *session, NSError *error) {
         if (session) {
             NSLog(@"%@", [session userID]);
             NSLog(@"%@", [session userName]);
             NSLog(@"%@", [session authToken]);
             NSLog(@"%@", [session authTokenSecret]);
         } else {
             NSLog(@"Error: %@", [error localizedDescription]);
         }
     }];
}

希望对其他人也有帮助。

在 Swift 4.2 和 Xcode 10.1

默认 Twitter 登录按钮代码

let twitterLoginButton = TWTRLogInButton(logInCompletion: { session, error in
    if (session != nil) {
       print("signed in as \(session!.userName)");
    } else {
       print("error: \(error!.localizedDescription)");
    }
})

twitterLoginButton.frame  = CGRect(x: 60, y: 100, width: 200, height: 40)
self.view.addSubview(twitterLoginButton)

普通登录按钮操作代码

@IBAction func onClickTwitterSignin(_ sender: UIButton) {

    TWTRTwitter.sharedInstance().logIn { (session, error) in

        if (session != nil) {

            let name = session?.userName ?? ""
            print(name)
            print(session?.userID  ?? "")
            print(session?.authToken  ?? "")
            print(session?.authTokenSecret  ?? "")

            self.loadFollowers(session: session?.userID ?? "")

            let client = TWTRAPIClient.withCurrentUser()
            client.requestEmail { email, error in
                if (email != nil) {
                    let recivedEmailID = email ?? ""
                    print(recivedEmailID)
                } else {
                    print("error--: \(String(describing: error?.localizedDescription))");
                }
            }

            let twitterClient = TWTRAPIClient(userID: session?.userID)
            twitterClient.loadUser(withID: session?.userID ?? "") {(user, error) in
                print(user?.profileImageURL ?? "")
                print(user?.profileImageLargeURL ?? "")
                print(user?.screenName ?? "")
            }

            let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "SVC") as! SecondViewController
            self.navigationController?.pushViewController(storyboard, animated: true)
        } else {
            print("error: \(String(describing: error?.localizedDescription))");
        }
    }

}