Ios 将FBProfilePictureView转换为UIImage
我有一个Facebook登录,可以获取用户的个人资料图片、lblUsername和lblEmail。我知道FBProfilePictureView是一个包含UIImageView的UIView 因此,我要问的是,如何将您从Facebook获得的个人资料图片转换或“保存”为UIImage?这是我的登录视图控制器.m。我已经在LoginViewController.h文件中正确导入了Facebook SDKIos 将FBProfilePictureView转换为UIImage,ios,objective-c,facebook,uiimageview,Ios,Objective C,Facebook,Uiimageview,我有一个Facebook登录,可以获取用户的个人资料图片、lblUsername和lblEmail。我知道FBProfilePictureView是一个包含UIImageView的UIView 因此,我要问的是,如何将您从Facebook获得的个人资料图片转换或“保存”为UIImage?这是我的登录视图控制器.m。我已经在LoginViewController.h文件中正确导入了Facebook SDK #import "LoginViewController.h" #import <Qu
#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
#导入“LoginViewController.h”
#进口
@接口LoginViewController()
-(void)切换隐藏状态:(BOOL)应隐藏;
@结束
@实现LoginViewController
-(无效)viewDidLoad{
[超级视图下载];
[自切换HiddenState:是];
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*图像=nil;
//
//用于(在[self.profilePicture子视图]中的NSObject*pic){
//if([pic IsMemberOf类:[UIImageView类]]){
//UIImageView*对象=(UIImageView*)图片;
//image=objImg.image;
//中断;
// }
// }
//
//self.view.backgroundColor=[UIColor WithPatternImage:image];
//
//加载视图后执行任何其他设置。
}
-(无效)切换HIDDENSTATE:(BOOL)应该隐藏{
self.lblUsername.hidden=应该隐藏;
self.lblEmail.hidden=应隐藏;
self.profilePicture.hidden=shouldHide;
self.loggedinwallper.hidden=应隐藏;
self.FBlogout.hidden=应隐藏;
}
-(void)切换取消隐藏状态:(BOOL)shouldShow{
self.loggedinwallpaper.hidden=否;
}
-(无效)loginView显示日志用户:(FBLoginView*)loginView{
self.lblLoginStatus.text=@;
[自切换HiddenState:否];
[自切换取消隐藏状态:是];
}
-(无效)loginView显示LoggeDoutUser:(FBLoginView*)loginView{
self.lblLoginStatus.text=@;
[自切换HiddenState:是];
}
-(void)loginView蚀刻教育信息:(FBLoginView*)loginView用户:(id)用户{
NSLog(@“%@”,用户);
self.profilePicture.profileID=user.objectID;
self.lblUsername.text=user.name;
self.lblEmail.text=[user objectForKey:@“email”];
UIStoryboard*情节提要=[UIStoryboard情节提要,名称:@“Main”bundle:nil];
UIViewController*homeViewController=(UIViewController*)[storyboard InstanceEviewController标识符:@“homeViewController”];
[self-presentViewController:homeViewController动画:是完成:无];
//
//用于(在[self.profilePicture子视图]中的NSObject*obj){
//if([obj IsMemberOf类:[UIImageView类]]){
//UIImageView*对象=(UIImageView*)对象;
//image=objImg.image;
//中断;
// }
// }
}
-(无效)loginView:(FBLoginView*)loginView句柄错误:(N错误*)错误{
NSLog(@“%@,[错误本地化描述]);
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
#pragma标记-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
//-(void)prepareForSegue:(UIStoryboardSegue*)segue发送方:(id)发送方{
//UIImage*image=\u profilePicture;
//HomeViewController*HomeViewController=(HomeViewController*)segue.destinationViewController;
//homeviewController.homepic=图像;
//
//使用[segue destinationViewController]获取新的视图控制器。
//将选定对象传递给新的视图控制器。
//}
@结束
我不会使用这样的图片,因为facebook会加载不同大小的图片,你不知道你是否会得到一个低质量的版本。你不能下载你自己需要的尺寸的图片吗
Facebook使用如下URL:
ofc您需要将用户的facebook用户ID和宽度以及高度交换为您需要的值。因此,使用我已经设置好的FB登录(连接到解析,我不想弄乱它),如果您知道,我将如何设置该url以获取图片?或者如果你不确定我将如何使用该url,即使你不会像这样使用图像,你知道我将如何做吗?我在回答中向你展示了如何构建链接-我不太理解你给我的url的问题。我只是想知道我将如何使用我已经获得的用户ID来获取图像。我明白你现在说的话。谢谢你的帮助!