带有自定义按钮的自定义 UIAlertView

Posted

技术标签:

【中文标题】带有自定义按钮的自定义 UIAlertView【英文标题】:Custom UIAlertView with Custom Buttons 【发布时间】:2011-06-22 10:34:42 【问题描述】:

我需要显示一个自定义 UIAlertView,它将有一个图像作为背景和两个自定义按钮,它们不是常规的 UIAlertView 按钮。这些按钮也将被自定义,并拥有自己的艺术作品。

上面的例子有背景,但我也想在上面添加自定义按钮。

我正在关注this 指南,但我认为它没有解决自定义按钮处理问题。

如何做到这一点?有什么想法吗?

【问题讨论】:

【参考方案1】:

Apple 似乎不喜欢你过度定制 UIAlertView,而且我听说有很多情况下他们拒绝了应用进入应用商店的情况。

由于您所追求的自定义程度,我建议您创建自己的新 Alert 类,该类具有动画效果并具有背景阴影等,并带有可以自定义位置/外观的按钮。

【讨论】:

【参考方案2】:

我发现 Jeff LaMarche 的这篇博文对制作自定义警报视图非常有帮助:http://iphonedevelopment.blogspot.com/2010/05/custom-alert-views.html。他完成了创建自定义类的步骤,因为修改 UIAlertView 可能会导致 App Store 拒绝(但是他警告说,使用自定义技术仍然会导致 HIG 违规,但我怀疑它们会不会影响您正在尝试做的事情)。完成后,您将拥有一个自定义警报视图类,可以添加与 UIAlertView 大致相同的样式:

至此,我们完成了。我们现在可以 完全使用此自定义警报视图 我们使用 UIAlertView 的方式相同:

CustomAlertView *alert = [[CustomAlertView alloc] init];
alert.delegate = self;
[alert show];
[alert release];

他创建了一个自定义文本输入视图。显然,在您的情况下,您可能希望使用不同的背景,而不是添加文本字段,而是只使用按钮。由于他也在他的视图中制作了自定义按钮,因此它应该可以满足您的所有需求,甚至更多。

【讨论】:

【参考方案3】:

不幸的是,Apple 不允许子类化 UIAlertView:

UIAlertView 类旨在按原样使用,而不是 支持子类化。此类的视图层次结构是私有的,并且 不得修改。

最简单的方法是创建您自己的具有类似行为的类。

这是一个例子: http://iosdevtricks.blogspot.com/2013/04/creating-custom-alert-view-for-iphone.html

【讨论】:

以上是关于带有自定义按钮的自定义 UIAlertView的主要内容,如果未能解决你的问题,请参考以下文章

看起来像 UIAlertView 的自定义视图

带有单选按钮 iOS 的 UIAlertView [关闭]

我的自定义 UIView 没有显示在屏幕上

带有自定义后退导航按钮的自定义按钮栏

带有 Onclick 的自定义按钮,隐藏 Onclick 事件

带有 UIButton 的自定义 UITableViewCell:单击了哪个按钮?