我正在使用MFMessageComposeViewController来显示SMS发送界面。
我的应用使用全屏,状态栏被plist文件中的设置隐藏(状态栏最初隐藏= YES)。
当我向消息作曲家展示时:
+(void)composeSMS:(id)sender
{
if (![MFMessageComposeViewController canSendText]) return;
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.wantsFullScreenLayout = YES;
controller.messageComposeDelegate = sender;
[controller setBody:@"He descubierto un App estupenda! . "];
[controller setModalPresentationStyle:UIModalTransitionStyleFlipHorizontal];
if (controller) [sender presentModalViewController:controller animated:YES];
[controller release];
}
问题是当显示作曲家时导航栏位于顶部y = 0,但在此栏和视图的其余出口之间显示与状态栏大小相同的空白空间。状态栏显示在此屏幕(第二期)中,但与作曲家视图的导航栏重叠。
在其他未隐藏状态栏的项目中,这就像魅力一样。但这是第一个没有状态栏的项目,这种情况正在发生。
任何人都知道如何修复它?
感谢。
答案 0 :(得分:3)
模态显示消息控制器后隐藏状态栏。像这样:
controller.wantsFullScreenLayout = NO;
[self presentModalViewController:controller animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
答案 1 :(得分:2)
我在应用程序中使用iMessage处理的方法是自己控制状态栏。 例如:
[[UIApplication sharedApplication] setStatusBarHidden:FALSE withAnimation:UIStatusBarAnimationSlide];
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:TRUE];
[controller release];
然后通过发送或取消完成:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[self dismissModalViewControllerAnimated:TRUE];
[[UIApplication sharedApplication] setStatusBarHidden:TRUE withAnimation:UIStatusBarAnimationSlide];
self.view.frame = CGRectMake(0.0, 0.0, [LayoutHelper width], [LayoutHelper height]);
self.view.center = CGPointMake([LayoutHelper xCenterPoint], [LayoutHelper yCenterPoint]-20);
}
这似乎显示了iMessage,然后返回到应用程序时,状态栏中没有任何空白空间被添加或删除。
这是我的第一篇文章,所以我希望这会有所帮助。
欢呼声