iOS FBSDKProfilePictureView возвращает пустое изображение
Поэтому я пытаюсь создать простую полосу прокрутки страниц, которые нравятся пользователю, с отображением изображения и имени. Однако вид профиля показывает пустое изображение, а не изображение-заполнитель, что означает, что он получает изображение для отображения. После размещения некоторых точек останова в фактическом коде FBSDKProfilePictureView, в частности в _updateImageWithData:state:
, он показывает, что для каждого изображения объект данных составляет всего 97 байт. Самое смешное, когда я так что-то вроде создания автономного вида изображения профиля, как
FBSDKProfilePictureView *profilePictureView = [[FBSDKProfilePictureView alloc] initWithFrame:CGRectMake(inset, inset, profileSize, profileSize)];
profilePictureView.profileID = @"4"; //Mark Zuckerberg's id
Он отображает изображение правильно.
Поэтому сначала я подумал, что это может быть связано с установкой слишком большого количества идентификаторов профилей, что создает слишком много запросов url, но если я просто выполню код ниже один раз (т. е. без цикла), он все равно вернет те же 97 байт.
Ниже приведен код, который я использую для создания представления прокрутки. for (int i = 0; i < numToIterate; i++) {
NSDictionary *curr = [sharedInterests objectAtIndex:i];
NSString *idNumber = [curr objectForKey:@"id"];
NSString *name = [curr objectForKey:@"name"];
NSLog(@"getting %@, %@.", name, idNumber);
// get logo
FBSDKProfilePictureView *itemView = [[FBSDKProfilePictureView alloc] initWithFrame:CGRectMake(i * (smallFrameWidth + horizontalBufferBetweenPics) + horizontalBufferBetweenPics, 0, smallFrameWidth,smallFrameHeight)];
[self.scrollView addSubview:itemView];
[itemView setProfileID:idNumber];
// create description
UILabel *currDescriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(i * (smallFrameWidth + horizontalBufferBetweenPics) + horizontalBufferBetweenPics, smallFrameHeight, categoryLabelWidth, categoryLabelHeight)];
currDescriptionLabel.text = name;
currDescriptionLabel.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
currDescriptionLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:12];
currDescriptionLabel.textAlignment = NSTextAlignmentCenter;
currDescriptionLabel.numberOfLines = 2;
[scrollView addSubview:currDescriptionLabel];
}
1 ответ:
Я создал модифицированную версию FBProfilePictureView, которая предоставляет отчеты об ошибках. Он позволяет задать обработчик завершения, в котором будут сообщаться об ошибках:
self.facebookPictureView.completionHandler = ^(DBFBProfilePictureView* view, NSError* error){ if(error) { view.showEmptyImage = YES; view.profileID = nil; NSLog(@"Loading profile picture failed with error: %@", error); } }