【问题标题】:How to create array of images, and use draw() to draw them out in Swift?如何创建图像数组,并在 Swift 中使用 draw() 将它们绘制出来?
【发布时间】:2019-11-28 05:22:51
【问题描述】:

我正在尝试弄清楚如何使用图像数组创建“地图”。 我可以使用 f.draw(at:imagePoint) 很好地绘制一个图像,但是当我尝试绘制一个图像数组时,我无法做到。如何设置图像数组,然后绘制出我指定的数组?

  var loc = CGPoint(x: 50, y:30)
    //variables to hold the separate pictures
    let f = UIImage(named: "forest.png")!
    var m = UIImage(named: "mountain.png")!
    let o = UIImage(named: "out.png")!
    let p = UIImage(named: "plain.png")!
    let t = UIImage(named: "treasure.png")!
    let w = UIImage(named: "water.png")!
    let person = UIImage(named: "person.png")!

    override func draw(_ rect: CGRect) {

        //create array of the referenced images
        let tileMap = [o,o,o,o,o,o,o,o,o,o,o,o,
                       o,m,m,f,f,f,p,p,p,p,w,o,
                       o,m,m,f,f,f,p,p,p,p,w,o,m]

        print("draw called")
        var imagePoint = CGPoint(x: 0,y: 0)
        //display map
        //tileMap.draw(at: imagePoint)

        for element in tileMap{
            element.draw(at: imagePoint)
            //imagePoint = CGPoint(x:0,y:0)
            //how to increment CGPoint for each image?

        }

        //display person
        person.draw(at:loc)
    }

【问题讨论】:

  • 你的代码没有意义。你不能对数组说draw
  • 绘制每个图像以形成“图块”的替代方法是什么?
  • 遍历数组并将每个图像绘制到网格中的位置,一次一个。
  • 我编辑它是因为我试图循环遍历,我将如何更改每个图像的 CGPoint?抱歉,我是新手。
  • 尝试使用collectionView来显示你所有的图片

标签: swift nsarray


【解决方案1】:

也许这对你有帮助:=

    let tileMap = [o,o,o,o,o,o,o,o,o,o,o,o,
                   o,m,m,f,f,f,p,p,p,p,w,o,
                   o,m,m,f,f,f,p,p,p,p,w,o,m]

    print("draw called")

    let row = 5

    let numberOfInRow = tileMap.count / row

    let xWidth = Int(UIScreen.main.bounds.width) / numberOfInRow
    let yHeight = Int(UIScreen.main.bounds.height) / row

    var xPoint = 0
    var yPoint = 0

    var itemCountInRow = 0

    for element in tileMap{

        let imagePoint = CGPoint(x: xPoint,y: yPoint)
        element.draw(at: imagePoint)

        if(numberOfInRow > itemCountInRow){
            itemCountInRow += 1
            xPoint += xWidth
        }else{
            itemCountInRow = 0
            xPoint = 0
            yPoint += yHeight
        }
    }

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多