2012-09-13 155 views
0

我成功地为web定制了登录按钮,但我怎么能为iOS做到这一点?我一直在寻找,一直没能找到任何东西。自定义手机Facebook登录按钮?

我目前使用的是Facebook SDK 3.0,实现起来相当容易,但FBLoginView按钮的设计像拇指一样突出。我正在试图用一个动画按钮来掩盖它,并向前触摸它背后的真实Facebook按钮。

Apple会在提交时拒绝这种解决方法吗? 必须有一个更简单的方法,不是吗?

回答

0

是的,你可以通过下面的代码更改。

for (id obj in loginview.subviews) 
{ 
    if ([obj isKindOfClass:[UIButton class]]) 
    { 
     UIButton * loginButton = obj; 
     [loginButton setBackgroundColor:[UIColor blueColor]]; 
     UIImage *loginImage = [UIImage imageNamed:@"facebook_btn~ipad.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 = @"Login with facebook"; 
     loginLabel.textAlignment = NSTextAlignmentCenter; 
     loginLabel.frame = CGRectMake(0, 30, 600, 30); 
     //loginLabel.text. = [UIFont fontWithName:@"Default" size:30.0]; 
     [loginLabel setFont:[UIFont boldSystemFontOfSize:27]]; 
    } 
} 
0

请阅读Facebook SDK中的README文件。 您必须在info.plist中添加Row - FacebookBundleName并将其命名为您的包。 然后,使用此名称将项目包添加到项目中,并放入名为“lang.lproj”的文件夹中: 例如:en.lproj - it.lproj - fr.lproj - es.lproj .... 将此文件夹您必须添加Localizable.strings文件,然后您可以本地化很多短语,如:

"FBLV:LogOutButton" = "Log Out"; 
"FBLV:LogInButton" = "Log In"; 
"FBLV:LoggedInAs" = "Logged in as: %@"; 
"FBLV:LoggedInUsingFacebook" = "Logged in using Facebook"; 
"FBLV:LogOutAction" = "Log Out"; 
"FBLV:CancelAction" = "Cancel"; 

希望它可以帮助您!

0
//Add the normal button then add your own image and tittle and give the action the button and use the below code in the button action. 
NSMutableDictionary *fbResultData; 
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login 
    logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends"] 
    fromViewController:self 
    handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
     if (error) { 
      NSLog(@"Process error"); 
     } else if (result.isCancelled) { 
      NSLog(@"Cancelled"); 
     } else { 
      NSLog(@"Logged in"); 

      if ([FBSDKAccessToken currentAccessToken]) 
      { 

       [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name,age_range,birthday,devices,email,gender,last_name,family,friends,location,picture" parameters:nil] 
        startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
         if (!error) { 

          NSString * accessToken = [[FBSDKAccessToken currentAccessToken] tokenString]; 
          NSLog(@"fetched user:%@ ,%@", result,accessToken); 

          fbResultData =[[NSMutableDictionary alloc]init]; 

          if ([result objectForKey:@"email"]) { 
           [fbResultData setObject:[result objectForKey:@"email"] forKey:@"email"]; 
          } 
          if ([result objectForKey:@"gender"]) { 
           [fbResultData setObject:[result objectForKey:@"gender"] forKey:@"gender"]; 
          } 
          if ([result objectForKey:@"name"]) { 
           NSArray *arrName; 
           arrName=[[result objectForKey:@"name"] componentsSeparatedByString:@" "]; 

           [fbResultData setObject:[arrName objectAtIndex:0] forKey:@"name"]; 
          } 
          if ([result objectForKey:@"last_name"]) { 
           [fbResultData setObject:[result objectForKey:@"last_name"] forKey:@"last_name"]; 
          } 
          if ([result objectForKey:@"id"]) { 
           [fbResultData setObject:[result objectForKey:@"id"] forKey:@"id"]; 
          } 

          FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
                 initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"] 
                 parameters:nil 
                 HTTPMethod:@"GET"]; 
          [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, 
                   id result, 
                   NSError *error) { 
           if (!error){ 

            if ([[result objectForKey:@"data"] objectForKey:@"url"]) { 
             [fbResultData setObject:[[result objectForKey:@"data"] objectForKey:@"url"] forKey:@"picture"]; 
            } 

            //You get all detail here in fbResultData 
            NSLog(@"Final data of FB login********%@",fbResultData); 

            self.fullNameTextField.text = [fbResultData objectForKey:@"name"]; 
            self.lastNameTextField.text = [fbResultData objectForKey:@"last_name"]; 
            [_customFaceBookButton setImage:[UIImage imageNamed:@"fb_connected"] forState:UIControlStateNormal]; 

           } }]; 
         } 
         else { 
          NSLog(@"result: %@",[error description]); 
          AlertView *alert = [[AlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:[error description] delegate:nil cancelButtonTitle:NSLocalizedString(@"DISMISS", nil) otherButtonTitle:nil]; 
          [alert showInView:self.view.window]; 
         } 
        }]; 
      } 
      else{ 
       [[FBSDKLoginManager new] logOut]; 
        [_customFaceBookButton setImage:[UIImage imageNamed:@"fb_connected"] forState:UIControlStateNormal]; 
      } 
     } 
    }]; 
+0

希望它有一个帮助 –

+0

添加正常的按钮,然后添加您自己的图像和标题给你的按钮,并将行动给按钮,并在按钮操作中使用下面的代码 –