ozb*_*zba 34 facebook objective-c ios facebook-login facebook-ios-sdk
为了在我的ios应用程序中连接到facebook,我正在使用Facebook SDK for iOS的 FBLoginVIew .
它显示了一个不错的FB登录按钮,但我想使用我自己的图像和文本作为登录按钮.问题是我没有看到任何地方如何定制它.
我已经设法通过覆盖FacebookSDKResources.bundle/FBLoginView/images中的图像来更改登录按钮背景图像,但我无法找到更改登录按钮文本和位置的位置,因此它保持"登录"...
解决方案,任何人
谢谢
ozb*_*zba 67
答案是遍历FBLoginView子视图,找到按钮和标签并自定义它们.
这是代码:
FBLoginView *loginview =
[[FBLoginView alloc] initWithPermissions:[NSArray arrayWithObject:@"publish_actions"]];
loginview.frame = CGRectMake(4, 95, 271, 37);
for (id obj in loginview.subviews)
{
if ([obj isKindOfClass:[UIButton class]])
{
UIButton * loginButton = obj;
UIImage *loginImage = [UIImage imageNamed:@"YourImg.png"];
[loginButton setBackgroundImage:loginImage forState:UIControlStateNormal];
[loginButton setBackgroundImage:nil forState:UIControlStateSelected];
[loginButton setBackgroundImage:nil forState:UIControlStateHighlighted];
[loginButton sizeToFit];
}
if ([obj isKindOfClass:[UILabel class]])
{
UILabel * loginLabel = obj;
loginLabel.text = @"Log in to facebook";
loginLabel.textAlignment = UITextAlignmentCenter;
loginLabel.frame = CGRectMake(0, 0, 271, 37);
}
}
loginview.delegate = self;
[self.view addSubview:loginview];
Run Code Online (Sandbox Code Playgroud)
我想成为一个UIBarbutton的FBLoginview节目,所以我做了一个简单的方法:
首先我添加了FBLoginView作为属性:
@property (nonatomic, strong) FBLoginView* loginView;
Run Code Online (Sandbox Code Playgroud)
然后我在视图外添加了登录视图:
self.loginView = [[FBLoginView alloc] init];
self.loginView.frame = CGRectMake(-500, -500, 0, 0);
[self.view addSubview:self.loginView];
self.loginView.delegate = self;
Run Code Online (Sandbox Code Playgroud)
然后,我添加了一个标准系统UIbarbuttonItem
UIBarButtonItem* fbButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(fireFbLoginView)];
[self.navigationItem setRightBarButtonItem:fbButton];
Run Code Online (Sandbox Code Playgroud)
然后我将栏按钮设置为触发FBLoginView的单击操作;)
-(void)fireFbLoginView{
for(id object in self.loginView.subviews){
if([[object class] isSubclassOfClass:[UIButton class]]){
UIButton* button = (UIButton*)object;
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
当我写这篇文章时,Facebook已经发布了适用于iOS的SDK 3.0版本.
ozba的答案是有效的,但从我看来,它不应该被使用.
我的解决方案非常简单.在Facebook的下载文件夹FacebookSDK中,您有一个名为Samples的文件夹.在那里,您必须查看SessionLoginSample.您可以看到它们有一个普通的Round Rect Button,它通过拥有它的ViewController具有FBLoginViewDelegate,它可以根据FBSession状态更改文本.相信我,这很简单.
或者阅读Facebook的文档来构建自己的按钮:
https://developers.facebook.com/docs/ios/login-tutorial/#login-apicalls
像这样:
- (void) buttonSelector
{
[FBSession openActiveSessionWithReadPermissions:@[@"basic_info"]
allowLoginUI:YES
completionHandler:
^(FBSession *session, FBSessionState state, NSError *error) {
if (FBSession.activeSession.state == FBSessionStateOpen) {
//To get the use
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection,NSDictionary<FBGraphUser> *user, NSError *error) {
NSString *token = [[[FBSession activeSession] accessTokenData] accessToken];
}];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34256 次 |
| 最近记录: |