TWTRLogInButton(推特登录按钮)设置标题导致文字重叠
TWTRLogInButton (Twitter Login Button) set title causes overlapping text
TWTRLoginButton
应该继承自 UIButton
,但是当我使用 setTitle:forState
时,我最终会得到重叠的文本,如下所示:
我在做什么:
@IBAction func twitterLoginButtonPressed(sender: TWTRLogInButton) {
twitterLoginButton.logInCompletion = {(session:TWTRSession!, error:NSError!) -> Void in
if error != nil {
println(error)
}
if session != nil {
self.session = session
self.twitterLoginButton.setTitle("Logged in as \(session.userName)", forState: .Normal)
}
}
}
这就像他们在视图层次结构中添加了标签,而不是使用 built-in API。但是 the docs 不要说任何关于这个或如何使用它的事情...
他们会按照您的想法为按钮添加自定义标签。并且没有 API 来自定义它。如果真要做,需要深挖视图层级。
点赞:
twitterLoginButton.logInCompletion = {(session:TWTRSession!, error:NSError!) -> Void in
if error != nil {
println(error)
}
if session != nil {
self.session = session
// Digging the view hierarchy
var view = twitterLoginButton.subviews.last as UIView
var label = view.subviews.first as UILabel
label.text = "Logged in as \(session.userName)"
}
}
不言而喻,如果视图层次结构将来发生变化,它将不起作用。
@构建成功
用一种非常直接的方式是可能的!!!甚至在 fabric(twitter mobile SDK) 文档中都有记录。
您可以自定义 TWTRLogInButton 的外观和感觉 - 这是 Twitter 本身提供的登录按钮。但您也可以拥有自己的。您只需要在您自己创建的按钮上执行登录事件的完成处理程序。
请遵循以下代码片段:
-(IBAction)btnLoginWithTwitterDidTap:(id)sender {
self.whichSocial = TW_LOGIN;
[[Twitter sharedInstance]logInWithCompletion:^(TWTRSession* session, NSError* error) {
if (session) {
NSLog(@"signed in as %@", [session userName]);
} else {
NSLog(@"error: %@", [error localizedDescription]);
}
}];
}
就这么简单
我做了一个变通方法来编辑 TWTRLoginButton 字体...我想您也可以更改文本...
for sub in twitterLoginButton.subviews {
for s in sub.subviews {
if s is UILabel {
(s as! UILabel).font = ... font ...
(s as! UILabel).text = ... text ...
}
}
}
TWTRLoginButton
应该继承自 UIButton
,但是当我使用 setTitle:forState
时,我最终会得到重叠的文本,如下所示:
@IBAction func twitterLoginButtonPressed(sender: TWTRLogInButton) {
twitterLoginButton.logInCompletion = {(session:TWTRSession!, error:NSError!) -> Void in
if error != nil {
println(error)
}
if session != nil {
self.session = session
self.twitterLoginButton.setTitle("Logged in as \(session.userName)", forState: .Normal)
}
}
}
这就像他们在视图层次结构中添加了标签,而不是使用 built-in API。但是 the docs 不要说任何关于这个或如何使用它的事情...
他们会按照您的想法为按钮添加自定义标签。并且没有 API 来自定义它。如果真要做,需要深挖视图层级。
点赞:
twitterLoginButton.logInCompletion = {(session:TWTRSession!, error:NSError!) -> Void in
if error != nil {
println(error)
}
if session != nil {
self.session = session
// Digging the view hierarchy
var view = twitterLoginButton.subviews.last as UIView
var label = view.subviews.first as UILabel
label.text = "Logged in as \(session.userName)"
}
}
不言而喻,如果视图层次结构将来发生变化,它将不起作用。
@构建成功
用一种非常直接的方式是可能的!!!甚至在 fabric(twitter mobile SDK) 文档中都有记录。
您可以自定义 TWTRLogInButton 的外观和感觉 - 这是 Twitter 本身提供的登录按钮。但您也可以拥有自己的。您只需要在您自己创建的按钮上执行登录事件的完成处理程序。
请遵循以下代码片段:
-(IBAction)btnLoginWithTwitterDidTap:(id)sender {
self.whichSocial = TW_LOGIN;
[[Twitter sharedInstance]logInWithCompletion:^(TWTRSession* session, NSError* error) {
if (session) {
NSLog(@"signed in as %@", [session userName]);
} else {
NSLog(@"error: %@", [error localizedDescription]);
}
}];
}
就这么简单
我做了一个变通方法来编辑 TWTRLoginButton 字体...我想您也可以更改文本...
for sub in twitterLoginButton.subviews {
for s in sub.subviews {
if s is UILabel {
(s as! UILabel).font = ... font ...
(s as! UILabel).text = ... text ...
}
}
}