簡體   English   中英

將FBProfilePictureView變成UIImage

[英]Turn FBProfilePictureView into UIImage

我有一個Facebook登錄名,可獲取用戶profilePicture,lblUsername和lblEmail 我知道FBProfilePictureView是一個包含UIImageView的UIView。

所以,我要問的是如何轉換或“保存”從Facebook獲得的profilePicture作為UIImage? 這是我的LoginViewController.m 我已經在LoginViewController.h文件中正確導入了Facebook SDK。

#import "LoginViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface LoginViewController ()

- (void)toggleHiddenState:(BOOL)shouldHide;

@end

@implementation LoginViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self toggleHiddenState:YES];
    self.lblLoginStatus.text = @"";

    self.loginButton.readPermissions = @[@"public_profile", @"email"];
    self.loginButton.layer.cornerRadius = 0;
    [self.loginButton.layer setBorderWidth:0.0f];

    self.loginButton.delegate = self;


//    UIImageView *image = nil;
//    
//    for (NSObject *pic in [self.profilePicture subviews]) {
//        if ([pic isMemberOfClass:[UIImageView class]]) {
//            UIImageView *objImg = (UIImageView *)pic;
//            image = objImg.image;
//            break;
//        }
//    }
//    
//    self.view.backgroundColor = [UIColor colorWithPatternImage:image];
//
    // Do any additional setup after loading the view.
}

-(void)toggleHiddenState:(BOOL)shouldHide{
    self.lblUsername.hidden = shouldHide;
    self.lblEmail.hidden = shouldHide;
    self.profilePicture.hidden = shouldHide;
    self.loggedinwallpaper.hidden = shouldHide;
    self.FBlogout.hidden = shouldHide;
}

-(void)toggleUnhiddenState:(BOOL)shouldShow{
    self.loggedinwallpaper.hidden = NO;
}

-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView{
    self.lblLoginStatus.text = @"";

    [self toggleHiddenState:NO];
    [self toggleUnhiddenState:YES];
}

-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
    self.lblLoginStatus.text = @"";

    [self toggleHiddenState:YES];
}

-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
    NSLog(@"%@", user);
    self.profilePicture.profileID = user.objectID;
    self.lblUsername.text = user.name;
    self.lblEmail.text = [user objectForKey:@"email"];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *homeViewController = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
    [self presentViewController:homeViewController animated:YES completion:nil];

//    
//    for (NSObject *obj in [self.profilePicture subviews]) {
//        if ([obj isMemberOfClass:[UIImageView class]]) {
//            UIImageView *objImg = (UIImageView *)obj;
//            image = objImg.image;
//            break;
//        }
//    }
}



-(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error{
    NSLog(@"%@", [error localizedDescription]);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//    UIImage *image = _profilePicture;
//    HomeViewController *homeviewController = (HomeViewController *)segue.destinationViewController;
//    homeviewController.homepic = image;
//

    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
//}


@end

我不會使用這樣的圖像,因為facebook會加載該圖像的不同大小,並且您不知道您是否只會獲得低質量的版本。 您不能以自己所需的大小自己下載圖像嗎?

Facebook使用如下網址: http ://graph.facebook.com/USER_ID/picture?width=WIDTH&height= HEIGHT

當然,您需要將USER_ID換成用戶的Facebook用戶ID,並將WIDTHHEIGHT換成您需要的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM