无论是将图像添加到ios中的资源还是文件夹中,我该怎么办

时间:2017-01-05 12:28:23

标签: ios xcode

我正在构建一个ios应用程序,其中我有很多图像可以在许多ViewController的ImageView中显示。这就是为什么我必须在项目中添加许多图像。

请告诉我在项目中添加图片的最佳做法。无论我是添加资产还是我项目的其他文件夹。

如果在某个文件夹中添加最佳方法,那么我该如何访问这些图像。

是否可以将所有图像添加到项目的文件夹中并获取这些图像并在UILabels中逐个显示ImageViews及其名称?如果有可能,请告诉我如何做到这一点。

2 个答案:

答案 0 :(得分:7)

显然,最好的办法是在xcassets中添加图片。通过单击名为" Images.xcassets"的蓝色文件夹导入图像。然后点击小" +"在出现的窗口底部加号。现在选择"导入"把图像放在那里。它真的很有帮助,因为你只会看到1个图像名称,而不是带有扩展名的重复名称,例如" @ 2x"和" @ 3x"。

enter image description here

为什么这种方法有益

这是组织图像的最佳方式。 App切片的概念适用于此处。

如果您不知道应用程序细化概念是什么,请参阅:

App thinning appcoda

如何加载图片

您可以从JSON文件中读取那些图像名称(推荐)。或者取一个数组并将所有图像名称放入其中并加载(不推荐)。

如果您正在阅读JSON文件

,请使用以下代码
 if let path = Bundle.main.path(forResource: "assets/test", ofType: "json") {
         let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .alwaysMapped)
        let jsonObj = JSON(data: data)
}

答案 1 :(得分:0)

最好和最简单的方法是在Assets.catalog中添加所有图像。现在在你的ViewController中创建一个包含所有图像名称的字符串数组 [String] 。现在使用 for-在循环中访问每个元素并打印名称和图像。现在创建程序化标签和图像以及每当xPosition超出屏幕宽度时

SWIFT示例

     let imageArray:[String] = ["image1","image2","image3","image4"]
        let xPosition = 20
        let yPosition = 20


        for item in imageArray{

         let imageView = UIImageView(image: UIImage(named: item)!)
          if (xPosition < (self.view.frame.width - 200)){
            imageView.frame = CGRect(x: xPosition, y: yPosition, width: 80, height: 80)
            var label = UILabel(frame: CGRectMake(xPosition,yPosition + 90, 20, 20))
            label.text = item
            xPosition += 100
          }else{
           yPosition += 100
           xPosition = 20
           imageView.frame = CGRect(x: xPosition, y: yPosition, width: 80, height: 80)   
           var label = UILabel(frame: CGRectMake(xPosition, yPosition + 90, 20, 20))
           label.text = item
          }

         self.view.addSubview(imageView)
         self.view.addSubview(label)
         }
        }