2

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

在此处输入图像描述

4

3 回答 3

1

你应该看看MBProgressHUD

它实际上是称为 UIProgressHUD 的未记录的私有 iOS 代码的复制品。

于 2012-05-17T19:51:18.590 回答
1

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

就像 sam(StatusHUD 的创建者)所说:

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

于 2012-05-17T19:52:49.063 回答
1

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

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

在您想使用自定义通知的视图中,UIView在 .h 文件中创建一个对象(这里我称之为pleaseWait)并在 .m 文件中(通常在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];

请注意,clipsToBounds需要cornerRadiusQuartzCore/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 处访问对象,就像我在加载阶段所做的那样。

我希望这对你有所帮助。

于 2012-05-17T20:37:37.947 回答