所以我正在向Facebook发帖,希望用户在这之前选择一张图片。 一旦图像被挑选,我就会显示Facebook。问题是,当我直接显示Facebook时,没有图像选择部分,它看起来很好。当我在选择图像后显示它时,Facebook共享看起来很动画,但是很迟钝。好像动作的帧速率很低。
这是我的代码:
self.portraitPicker = [[UIImagePickerController alloc] init];
#if !(TARGET_IPHONE_SIMULATOR)
self.portraitPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
#endif
[self.portraitPicker setDelegate:self];
self.portraitPicker.allowsEditing = YES;
[self presentViewController:self.portraitPicker animated:YES completion:nil];
现在,当这个完成时,我会以模态显示Facebook发布:
[picker dismissViewControllerAnimated:YES completion:^{
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
self.facebookController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[self.facebookController setInitialText:@"Some text"];
[facebookController addImage:pickedImage];
[self presentViewController:self.facebookController animated:NO completion:nil];
}
}];
我可以在didFinishPickingMediaWithInfo
或imagePickerControllerDidCancel
中执行此操作,无所谓,问题仍然存在。
绝望,我试过了:
- 在主线程上显示延迟
- 将其显示为异步
- 在dismiss-block外面显示
- 从AppDelegate的rootviewcontroller显示
这与Facebook无关,与SLServiceTypeTwitter
以及MFMessageComposeViewController
一样。
似乎无法消除仅显示图像选择器的滞后动画。有谁知道是什么导致了这个?
答案 0 :(得分:0)
鉴于缺乏回应和类似问题,我认为原因是我自己的架构。 事实证明,我的一个viewcontrollers的ViewDidAppear在显示相机选择器后被调用(因为它变成了活动的viewcontroller,因此成为了非活动的viewcontroller,将控制权交还给原始的viewcontroller)。
阻止此viewDidAppear中发生的后台调用和动画解决了该问题。我仍然不知道为什么叫它延迟(即10秒,甚至未来100秒,当什么都没发生的时候)仍然出现了滞后的外观,但确实如此。