iOS上每个选项的带有图像的操作表

时间:2017-12-14 16:02:36

标签: ios iphone swift

有没有办法在iOS上的动作表中添加图像?与苹果做app应用商店或苹果音乐应用程序相同。我对apple docs的基本搜索表明我没有在Action Sheet中创建子类或添加子视图。

" UIActionSheet不是为子类设计的,也不应该在其层次结构中添加视图。" - Apple Docs

enter image description here

5 个答案:

答案 0 :(得分:3)

要在操作表中添加图像,您需要执行以下操作...

<强>夫特

let image = UIImage(named: "myImageName")
let action = UIAlertAction(title: "Action 1", style: .default, handler: nil);
action.setValue(image?.withRenderingMode(.alwaysOriginal), forKey: "image")

目标C

UIAlertAction* action = [UIAlertAction actionWithTitle:@"Action 1" style:UIAlertActionStyleDefault handler:nil];
[action setValue:[[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forKey:@"image"];

干杯:)

答案 1 :(得分:1)

自iOS 8.3起,

UIActionSheet已弃用。 使用UIAlertController及其UIAlertAction。 看看Add Image to UIAlertAction in UIAlertController

答案 2 :(得分:1)

快速4:如果图像较大且不合适,请使用此代码和UIImage Extension调整图像大小:

func showAlert() {
    let alertController = UIAlertController()
    let action = UIAlertAction(title: "Title", style: .default) { (action: UIAlertAction!) in
    }
    if let icon = icon?.imageWithSize(scaledToSize: CGSize(width: 32, height: 32)) {
        action.setValue(icon, forKey: "image")
    }

    alertController.addAction(action)
    self.present(alertController, animated: true, completion: nil)
}

并使用此扩展名:

extension UIImage {

    func imageWithSize(scaledToSize newSize: CGSize) -> UIImage {

        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
        self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
        let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return newImage
    }

}

答案 3 :(得分:0)

UIAlertControllerUIActionSheet具有相同的限制,没有真正好的方法来自定义布局。

您可能希望查看提供功能等价物以及更好的自定义选项的SDCAlertView等库。

答案 4 :(得分:0)

在Swift中        它仅适用于UIAlertController操作表

for(int i = 0; i < worker size ; i++) {
    Future future = completionService.take();

     Object content = future.get();

}