当您切换静音模式时,如何显示看起来像那个的iPhone消息(警报?)

时间:2012-05-17 19:49:34

标签: iphone ios cocoa-touch

当您将iPhone切换到静音模式或从静音模式切换时,或者通过按侧面按钮调节音量时,屏幕中间会出现一个图标。 Cocoa Touch是否允许开发人员使用这种警报?如果是这样,它叫什么?

enter image description here

3 个答案:

答案 0 :(得分:1)

您应该查看MBProgressHUD

它实际上是一个名为UIProgressHUD的未记录的私有iOS代码的副本。

答案 1 :(得分:1)

您不需要progressHUD,但更多的是StatusHUD。在这里看到一个好的:https://github.com/samvermette/SVStatusHUD

像Sam(StatusHUD的创建者)所说:

  

SVStatusHUD模仿iOS上方向锁定,静音和音量变化时显示的HUD。它应该仅用于响应硬件或其他重要通知(例如,当您的应用程序检测到附件时)。如果你只想展示一个操作的进度或成功,你应该看看SVProgressHUD。

答案 2 :(得分:1)

请注意,您不应使用UIProgressHUD等私有API,否则Apple会在您提交时拒绝您的应用。我建议您通过操作视图并将其添加为子视图来构建自己的设计,或者使用这样做的免费库。如果您使用自己的视图(就像我在我的应用程序中那样),您可以轻松地显示它并通过使用alpha属性来隐藏它。这是一个例子:

首先创建一个NIB文件并根据需要进行设计。请记住重新调整大小(比如260 * 200或任何你喜欢的东西),这看起来像是一个通知。添加您想要的组件并为其提供标签,以便您以后可以访问它们。在我的示例中假设我只添加了UILabel

在您要使用自定义通知的视图中,在.h文件(此处称为UIView)和.m文件中创建pleaseWait对象(通常在viewDidLoad)按如下方式加载:

NSArray *nibMyNiceAlert = [[NSBundle mainBundle] loadNibNamed:@"myNiceAlertNibName" owner:self options:nil];
((UILabel*)[[nibMyNiceAlert objectAtIndex:0] viewWithTag:1]).text = NSLocalizedString(@"The text the user will see", @"my explanation of this text!");
pleaseWait = [nibConnecting objectAtIndex:0];
pleaseWait.frame = CGRectMake(30, 70, 260, 200);
pleaseWait.alpha = 0;
pleaseWait.clipsToBounds = YES;
pleaseWait.layer.cornerRadius = 20;
[self.view addSubview:pleaseWait];

请注意,clipsToBoundscornerRadius需要库QuartzCore/QuartzCore.h,并用于使视图的边缘四舍五入。请注意,alpha开始为0,因为我不希望在加载时看到我的警报。

现在,每当您想要显示此通知时:

[UIView beginAnimations:@"FadeIn" context:nil];
[UIView setAnimationDuration:0.2];
pleaseWait.alpha = 0.65;
[UIView commitAnimations];

要删除它:

[UIView beginAnimations:@"FadeOut" context:nil];
[UIView setAnimationDuration:0.2];
pleaseWait.alpha = 0;
[UIView commitAnimations];

请记住,您可以在查看之前随时更改通知标签中的文本,方法是加载标记1处的对象,就像我在加载阶段一样。

我希望这会在某种程度上帮助你。