自定义 UIAlertView 上的按钮
Posted
技术标签:
【中文标题】自定义 UIAlertView 上的按钮【英文标题】:Customizing the buttons on a UIAlertView 【发布时间】:2012-05-31 07:10:59 【问题描述】:这是我自定义按钮的当前方式:
UIAlertView *av = [[UIAlertView alloc] init];
[av addButtonWithTitle:@""];
UIButton *yesButton = [av.subviews lastObject];
[av show];
[yesButton setImage:[UIImage imageNamed:@"test.png"] forState:UIControlStateNormal];
这样做的问题是原始视图在我为按钮设置的图像周围仍然可见。它没有完全封装图像。这是我到目前为止的一个例子:
https://www.dropbox.com/s/htb9pfihwmel5oo/testimage.png
有没有办法让图片完全占据整个按钮?
【问题讨论】:
【参考方案1】:如果您不想要一些不如 Sly Raskal 的答案强大的东西,而只是想要快速破解,那么它的工作方式类似于您现有的代码。你可以做这样的事情..当然你可以改变新的按钮框架来匹配你想要的。此外,您必须将 UIAlertView 定义为一个变量,以便您可以引用它,并在您的 someAction: 方法中将其关闭。
UIAlertView *av = [[UIAlertView alloc] init];
[av addButtonWithTitle:@""];
UIButton *yesButton = [av.subviews lastObject];
[yesButton setHidden:YES];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[av addSubview:button];
[av show];
[button setImage:[UIImage imageNamed:@"test.png"] forState:UIControlStateNormal];
[button addTarget:av action:@selector(someAction:) forControlEvents:[yesButton allControlEvents]];
[button setFrame:yesButton.frame];
【讨论】:
您先生,真是个天才。谢谢!【参考方案2】:如果在这种情况下,您所做的只是将按钮设置为不同的样式,但以一种简单的方式,我会按照本教程来完成您正在寻找的效果:
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-uialertview-custom-graphics/
如果您创建的应用程序是针对 App Store 的,我只想提一下,无论您实施什么更改,请确保它不使用任何私有 API 或违反 HIG 中记录的任何内容。这两种情况中的任何一种都肯定会警告您的应用被拒绝。
【讨论】:
感谢该链接,如果我遇到需要完全自定义 UIAlertView 的情况,我实际上已将其添加为书签。但是现在,我需要做的只是更换按钮,所以以简单的方式接近对我来说已经足够了。以上是关于自定义 UIAlertView 上的按钮的主要内容,如果未能解决你的问题,请参考以下文章
带有 UITextFields 和 UITextViews 的自定义 UIAlertView