是否可以以某种方式将缩略图icn 添加到操作表?

Posted

技术标签:

【中文标题】是否可以以某种方式将缩略图icn 添加到操作表?【英文标题】:Is it possible somehow to add a thumbnail icn to action sheet? 【发布时间】:2015-02-01 18:18:52 【问题描述】:

我想创建带有两个按钮的操作表,但我希望按钮具有缩略图图标,这可能吗?还有其他解决方案吗?也许有一种方法可以自定义操作表按钮......喜欢单独设计它们吗?

这是我当前的操作表方法:

- (void)tapResponder 

    NSLog(@"Tap!");

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"this is a title"
                                                             delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:@"one", @"two", nil];
    [actionSheet showInView:self.view];

但我真的很喜欢继续使用 ios 设计,所以请给我一个很酷的解决方案:))

谢谢!

【问题讨论】:

【参考方案1】:

也许这会有所帮助:

for (UIView *subview in actionSheet.subviews) 
    if( [subview isKindOfClass: [UIButton class]] )
        UIButton* btn = (UIButton*) subview;
        [btn setImage:[UIImage imageNamed: @"imageName"] forState:UIControlStateNormal];
     

【讨论】:

【参考方案2】:

很有可能,很容易实现:

这也适用于新的 UIAlertController:

UIAlertController *alertC = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerSytleActionSheet];

//Add your Actions
...
UIAlertAction *snapshot = [UIAlertAction actionWithTitle:@"Snapshot" style:UIAlertActionSytleDefault handler:^(UIAlertAction *action) 

//create a UIImage to display since it's technically a tableView:
UIImage *snapshotImage = [UIImage imageNamed:@"snapshot.png"];
//add it to the UIAlertAction of your choosing 
[snapshot setValue:snapshotImage forKey:@"image"];
...
[alertC addAction:snapshot];
[self presentViewController:alertC animated:YES completion:nil];

在 iOS 8 之前可以这样做:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"this is a title"
                                                         delegate:self
                                                cancelButtonTitle:@"Cancel"
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:@"one", @"two", nil];

[[[action valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];

[[[action valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:@"yourImage_Highlighted.png"] forState:UIControlStateHighlighted];

[actionSheet showInView:self.view];

关于这一点的几点说明,请确保您正确调整图像大小,无论 H x W 尺寸是多少,一旦将其插入操作表,该行将变得多大。所以使用像30x30这样的东西。此外,无论您的图像是什么颜色,都将默认为蓝色。此外,这不被视为公共 API,应用确实会通过这种方式获得批准,但您确实会冒风险

【讨论】:

谢谢哥们,兄弟,我没有真正得到你的例子,我试过了,但我遇到了一些问题。刚刚编辑了我的问题以显示我的动作拍摄是如何工作的,您能否根据我的代码更改您的示例,也许我会得到它?非常感谢:) UIActionSheet 已弃用 @nickshmick 您是否严格为 iOS8 编码? @nickshmick 如果您没有为 >= iOS8 编码,请查看我修改后的答案

以上是关于是否可以以某种方式将缩略图icn 添加到操作表?的主要内容,如果未能解决你的问题,请参考以下文章

将缩略图添加到 MKPinAnnotation

为任意音频文件生成缩略图

嵌入 YouTube 缩略图

是否可以将 URL 的一部分存储到变量中,或者以某种方式使用 cypress 并在以后使用它?

将图像从缩略图动画到全屏

仅在 html css 中将缩略图的背景图像网格放大到更高的分辨率