自定义UIAlertView

时间:2009-02-15 20:26:10

标签: iphone uialertview

任何人都有代码可以做到这一点:

UIAlertViewHack
(来源:booleanmagic.com

或更好的是,使用UIAlertView对象的3x2网格按钮?

我不关心文本字段,它是我想要的网格中的按钮(最好是图像而不是文本)。

5 个答案:

答案 0 :(得分:27)

我认为最好的办法是忘记自定义UIAlert视图并自己构建自定义视图。

首先,您所展示的内容并非“警报”,因此它与UIAlertView的设计目标背道而驰。这意味着您正在更改用户的UI范例,这绝不是一个好主意。

其次,将自定义视图设置到场所比将尝试破解UIAlertView以使其按照您的需要执行操作要容易得多。

答案 1 :(得分:11)

首先,您需要将警报框设置得更大,以容纳您的控件,但必须将其置于中心位置。

为此,不要设置帧大小,而是使用“\ n”作为necc的消息文本。 e.g:

alert = [[UIAlertView alloc] initWithTitle:@"Rate this picture."
message:@"Tap a star to rate.\n\n\n\n " /*------ look at here!!----*/
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];

然后使用UIAlertViewDelegate作为警报视图。

覆盖它的viewWillAppear: 添加按钮并在所需位置手动设置框架。

OR: 使用视图控制器创建整个视图,并将视图添加到警告框,如:

[myalertview addSubvew:mycomplexalert];

希望这会得到你的帮助:)。

我正在使用警报框来评分输入,包括星图,推特,fb反馈等。

更新iOS7:

对于iOS 7,使用组件创建自己的视图并将其设置为alertview的附件视图:

[alert setValue:imageView forKey:@"accessoryView"]; 

这很简单: - )

答案 2 :(得分:6)

This tutorial介绍了如何将UIAlertView子类化以实现输入文本框。它解释了如何放大视图,添加子视图(如文本框或图像)并进行转换以在屏幕上向上移动框。

答案 3 :(得分:6)

我写了一个几乎像素完美的UIAlertView替代品,它也是完全可配置的。如果符合您的需求,请查看CODialog

答案 4 :(得分:4)

没有内置组件。根据HIG文档,UIAlertView应该只有文本和按钮。

您必须创建自己的视图并向其添加控件。 SDK中的HeadsUpUI示例显示了如何将自定义菜单式视图显示为叠加层。

希望有所帮助。