iOS / iPhone - 显示UIActivityViewController时隐藏状态栏

时间:2015-01-13 08:28:45

标签: ios iphone statusbar uiactivityviewcontroller

我的应用程序保持状态栏隐藏,我正在使用UIActivityViewController来共享链接 我的一个应用视图。

显示UIActivityViewController时,首先显示状态栏。用户与UIActivityViewController交互后(即通过选择消息或其他内容),状态栏会隐藏,但我需要从头开始隐藏它。

如何阻止UIActivityViewController在演示时显示状态栏?

代码:

- (void)openActionSheet {



NSString *shareString = @"link";

NSArray *shareItems = [NSArray arrayWithObject:shareString];

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
activityController.excludedActivityTypes = [NSArray arrayWithObjects:UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypeAirDrop, nil];

[self presentViewController:activityController animated:YES completion:^{
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}];


}

4 个答案:

答案 0 :(得分:0)

- (void)openActionSheet {

NSString *shareString = @"link";

NSArray *shareItems = [NSArray arrayWithObject:shareString];

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
activityController.excludedActivityTypes = [NSArray arrayWithObjects:UIActivityTypePrint, UIActivityTypeSaveToCameraRoll, UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypeAirDrop, nil];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self presentViewController:activityController animated:YES completion:nil];

}

在呈现activityController之前隐藏状态栏。

答案 1 :(得分:0)

在.plist文件中设置基于视图控制器的状态栏外观值。

像这样。enter image description here

现在使用以下方法显示状态栏。 //只需在视图控制器中添加此方法这将自动调用

- (BOOL)prefersStatusBarHidden {
    return YES;
}

这将非常有效。

答案 2 :(得分:0)

它像子类化UIActivityViewController一样简单,并将prefersStatusBarHidden设置为true。 Swift代码:

// Subclass of UIActivity view controller that keeps the status bar hidden.
class MyUIActivityViewController : UIActivityViewController
{
    override func prefersStatusBarHidden() -> Bool {
        return true
    }
}

答案 3 :(得分:0)

Swift 1.1回答:

在呈现UIActivityViewController时隐藏状态栏:

  1. 确保在.plist文件中,键"查看基于控制器的状态栏外观“boolean设置为”YES“。

  2. 添加以下代码:

  3.   

    扩展名UIActivityViewController {

         

    覆盖公共func viewWillAppear(动画:Bool){

         

    self.setNeedsStatusBarAppearanceUpdate()

         

    }

         

    覆盖public func prefersStatusBarHidden() - >布尔{

         

    返回true

         

    }

         

    }

    值得注意的是,在显示运行iOS 7.1模拟器的UIActivityViewController时,我只遇到状态栏问题。我似乎没遇到iOS 8.1模拟器的问题。