【问题标题】:How to retrieve and display UIIMages stored in an array?如何检索和显示存储在数组中的 UIIMages?
【发布时间】:2016-03-28 05:10:15
【问题描述】:

我正在尝试将图像切成 9 块,将它们存储在一个数组中,然后在屏幕上随机重新分配它们。

我已经知道如何以编程方式创建一个新的 UIIMageView 并设置它的背景颜色,以便我可以看到它在哪里,但是我无法将用户所选图像 (displayImageView.image) 的裁剪部分显示在按下randomize 按钮后的tiledView, UIImageView

我尝试将所有图块存储在tileStack 数组中,每个图块的大小是displayImageView.image 的 1/3。不确定挂断是否在于我如何切片和存储图像,或者我如何将数组元素调用到视图中。

(我现在只是想显示一个片段/图块;稍后我将使用 for 循环来显示所有 9 个片段。)

//Beginning of function to cut photo into 9 tiles, then randomize them. 

//Cut selected image into 9 pieces and add each cropped image to tileStack array. 

@IBAction func randomize(sender: AnyObject) {

let tileSize = CGSizeMake(displayImageView.image!.size.width/3, displayImageView.image!.size.height/3)

    for (var rowI = 0; rowI < 3; rowI++)
    {
        for (var colI = 0; colI < 3; colI++)
        {
            let tileRect = CGRectMake(CGFloat(rowI) * tileSize.width, tileSize.height * CGFloat(colI), tileSize.width, tileSize.height)

            let tileImage = CGImageCreateWithImageInRect(displayImageView.image!.CGImage, tileRect)

            if let selectedImage = displayImageView.image
            {
                let tileImage = CGImageCreateWithImageInRect(selectedImage.CGImage, tileRect)
                tileStack.append(tileImage!)
            }

        }
    }

    //display tiles in order on screen

    var tiledView : UIImageView
    tiledView = UIImageView(frame:CGRectMake(50, 150, 100, 100))
    tiledView.backgroundColor = UIColor.redColor()
    tiledView.center = CGPointMake(150, 150)
    tiledView.image = tileStack[3] as? UIImage
    self.view.addSubview(tiledView)

}

【问题讨论】:

  • 不可能先在情节提要上制作 UIImageViews 而不是在运行时创建它们吗?那么将图像定位/分配给 UIImageViews 会更容易
  • CGImageCreateWithImageInRect(displayImageView.image!.CGImage, tileRect) 返回一个 CGImage,它实际上不是图像,而是图像的位图表示,您应该使用以下代码将 CGImage 转换为 UIImage var aNewUIImage = UIImage(CGImage: imageRef )
  • 非常感谢,@AjayBeniwal!这解决了我的问题!是的@Fonix,但我想使用 for 循环来创建几个 UIImageViews。不过感谢您的评论!

标签: ios swift uiimageview uiimage core-graphics


【解决方案1】:

CGImageCreateWithImageInRect(displayImageView.image!.CGImage, tileRect) 返回一个 CGImage,它实际上不是图像,而是图像的位图表示,您应该使用以下代码将 CGImage 转换为 UIImage var aNewUIImage = UIImage(CGImage: imageRef) – @Ajay Beniwal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 2019-10-27
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多