使用UIActivityViewController时我有一个奇怪的行为:
我有一个带共享按钮的UIViewController(768x704)。当我点击分享按钮时,会打开UIActivityView。关闭ActivityView后,我的导航栏(或视图控制器本身)会更改其大小。
以下是代码:
NSLog(@"Old bounds: %@",NSStringFromCGRect(self.view.bounds));
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:shareText] applicationActivities:nil];
[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){
NSLog(@"New bounds: %@",NSStringFromCGRect(self.view.bounds));
}];
[self presentViewController:activityViewController animated:YES completion:^{}];
输出:
Old Bounds: {{0, 0}, {768, 704}}
New Bounds: {{0, 0}, {768, 724}}
似乎是状态栏的高度。
这仅适用于iOS 7,在横向模式下的iPad上。任何其他情况都很有效 - 没有任何故障。
这可能是iOS7中的错误吗?或者只是我,做错了什么?
答案 0 :(得分:4)
根据UIActivityViewController Class Reference UIActivityViews应该在popovers中呈现:
<强>讨论强>
[...]在iPad上,您必须在弹出窗口中显示视图控制器。在其他设备上,您必须以模态方式呈现它。
当我将UIActivityViewController
放入popover时,我的问题似乎已得到解决。
经验教训:我应该更多地阅读课程参考文献;)
答案 1 :(得分:0)
在iOS7中,您的控制器通常是重叠的导航栏。 尝试将此方法添加到您的控制器:
- (UIRectEdge) edgesForExtendedLayout
{
return UIRectEdgeNone;
}
您的导航控制器也与satatusbar重叠。 最近使用系统控制器导致大量无证行为。
P.S。为什么要从self.navigationController呈现活动控制器而不是从self?
呈现它?