【问题标题】:Customizing the buttons on a UIAlertView自定义 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

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

【问题讨论】:

    标签: ios uibutton customization uialertview


    【解决方案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 的情况,我实际上已将其添加为书签。但是现在,我需要做的只是更换按钮,所以以简单的方式接近对我来说已经足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2011-10-14
    • 2011-05-10
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多