当前位置: 首页 > 面试题库 >

如何在Swift的UI PickerView组件中显示图像?

冯胤
2023-03-14
问题内容

我正在尝试在Swift
PickerView中使用图像。我不知道如何使图像实际出现在组件中。我知道如何使用带有titleForRow函数的Strings来执行此操作,但是我不知道如何使用图像来执行此操作。到目前为止,这是我的代码

import UIKit
class ViewController: UIViewController, UIPickerViewDelegate {

    @IBOutlet weak var pickerView: UIPickerView!


    var imageArray: [UIImage] = [UIImage(named: "washington.jpg")!,
        UIImage(named: "berlin.jpg")!, UIImage(named: "beijing.jpg")!,
        UIImage(named: "tokyo.jpg")!]



    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    // returns the number of 'columns' to display.
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{

        return 1

    }

    // returns the # of rows in each component..
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        return imageArray.count
    }



}// end of app

问题答案:

您将需要为UIPickerViewDelegate协议实现更多的委托方法。特别是rowHeight委托方法和viewForRow委托方法。

就像是:

// MARK: UIPickerViewDataSource

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return 2
}

 func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
    return 60
}


// MARK: UIPickerViewDelegate

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {

    var myView = UIView(frame: CGRectMake(0, 0, pickerView.bounds.width - 30, 60))

    var myImageView = UIImageView(frame: CGRectMake(0, 0, 50, 50))

    var rowString = String()
    switch row {
    case 0:
        rowString = “Washington”
        myImageView.image = UIImage(named:"washington.jpg")
    case 1:
        rowString = “Beijing”
        myImageView.image = UIImage(named:"beijing.jpg")
    case 2:
        default:
        rowString = "Error: too many rows"
        myImageView.image = nil
    }
    let myLabel = UILabel(frame: CGRectMake(60, 0, pickerView.bounds.width - 90, 60 ))
    myLabel.font = UIFont(name:some font, size: 18)
    myLabel.text = rowString

    myView.addSubview(myLabel)
    myView.addSubview(myImageView)

    return myView
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

   // do something with selected row
}

请注意,标签布局等仅用于演示,需要进行调整,或者最好使用自动布局ect。



 类似资料:
  • 问题内容: 下面的代码将更改所有3个组件的选择器视图的字体颜色。但是,当我尝试旋转车轮时会崩溃。我认为这与didSelectRow函数有关。也许这两个功能必须以某种方式嵌套?任何想法? 问题答案: 以下方法实现应为您提供帮助: 更新资料 如果要在多个或语句中使用,下面的subClass示例将为您提供帮助:

  • 问题内容: 我需要帮助在游戏场景中呈现警报视图。我目前正在努力做到这一点,例如GameScene.Swift不是标准的ViewController。如果有帮助,我需要这样做,因为我需要用户输入一个值,该值用作游戏中球Sprite Kit节点的坐标。输入只是一个标准整数,因此这不是问题。也欢迎通过警报视图实现此操作的其他任何想法。 那是在GameViewController文件中 谢谢 问题答案:

  • 问题内容: 我有一个要显示在项目中的.svg图像文件。 我尝试使用UIImageView,它适用于.png和.jpg图像格式,但不适用于.svg扩展名。有什么办法可以使用UIWebView或UIImageView显示.svg图像? 问题答案: 试试这个代码

  • 问题内容: 我想使用IPython笔记本作为交互式分析我使用Biopython模块制作的一些基因组图的方法。尽管有大量有关如何在IPython笔记本中使用内联图形的文档,但GenomeDiagram使用ReportLab工具箱,我认为IPython不支持内联图形。 但是,我当时想,一种解决方法是将绘图/基因组图写到文件中,然后打开图像内联图像,结果将是相同的,如下所示: 但是,我不知道该怎么做-或

  • 问题内容: 我有一个图像,我想在applet中显示它,问题是图像无法显示。我的代码有问题吗? 谢谢… 这是我的代码: 问题答案: 我怀疑您做错了,这应该很简单: HTML / applet元素的内容是什么?图片的名称是什么?图像与HTML位于同一目录中吗? 更新1 代码的第二行(已更改)将尝试将文件加载到与HTML相同的目录中。 当然,您可能需要添加一个来跟踪图像的加载,因为该方法立即返回(现在)

  • 这里是交易,我必须从sql server获取一个文本值,它是一个编码图像,存储在字符串中,然后我可以通过解码将其转换为图像类型,问题是,我如何在asp:image中显示解码后的图像?因为我希望这个组件有一个.image属性,我可以把图像放进去,它会像那样显示,但它只有.ImageUrl,如果图像存储在我的电脑中,它会工作得很好,但它不是,我尝试将它设为二进制字符串,然后使用和asp:image-u