自定义UIAlertView上的按钮

时间:2012-05-31 07:11:00

标签: ios uibutton customization uialertview

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

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

是否有任何方式使图像完全占据整个按钮?

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

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

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

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