1

这是我自定义按钮的当前方式:

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

有没有办法让图像完全占据整个按钮?

4

2 回答 2

3

如果您不想要像 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];
于 2012-05-31T07:44:25.257 回答
1

如果在这种情况下,您所做的只是将按钮设置为不同的样式,但以一种简单的方式,我将按照本教程完成您正在寻找的效果:

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-uialertview-custom-graphics/

如果您正在创建的应用程序是针对 App Store 的,我只想提一下,无论您实施什么更改,请确保它不使用任何私有 API 或违反 HIG 中记录的任何内容。这些情况中的任何一种都肯定会警告您的应用程序被拒绝。

于 2012-05-31T07:26:48.360 回答