【问题标题】:What can i do whether add images to assets or in folder in ios将图像添加到资产或 ios 的文件夹中,我该怎么办
【发布时间】:2017-01-05 12:28:22
【问题描述】:

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

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

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

这是否可以在项目的文件夹中添加所有图像并获取这些图像并在 ImageViews 中显示,并在 UILabels 中一一显示它们的名称?如果可能的话,请告诉我这样做的方法。

【问题讨论】:

  • 为什么不用资产目录?!
  • 在资产中添加所有图片
  • 1.使用Assets 的最佳实践 2. 如果您想从文件夹中获取图像,则将所有图像添加到一个文件夹中并使用 NSFileManager 从特定文件夹中获取所有图像,请参阅我的answer 以了解如何创建文件夹
  • 嘿,我已经看到你的另一个答案,但 swift 说捆绑中没有方法“stringByAppendingPathComponent”,它没有正确地告诉我该怎么做。请您再看一次最近的 swift 代码。我希望你的回答

标签: ios xcode


【解决方案1】:

显然最好的方法是在 xcassets 中添加图像。通过单击名为“Images.xcassets”的蓝色文件夹导入图像,然后单击出现的窗口底部的小“+”加号。现在选择“导入”将图像放入其中。这非常有用,因为您只会看到 1 个图像名称,而不是带有“@2x”和“@3x”等扩展名的重复名称。

为什么这种方法会受益

这是组织图像的最佳方式。应用切片的概念在这里适用。

如果您不知道什么是应用瘦身概念,请参考:

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)
}

【讨论】:

    【解决方案2】:

    最好和最简单的方法是在 Assets.catalog 中添加所有图像。现在在 ViewController 中创建一个字符串数组 [String] 包含所有图像的名称。现在使用 for- in循环访问每个元素并打印名称和图像。现在以编程方式创建标签和图像以及每当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)
             }
            }
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2019-12-29
      • 2014-10-03
      • 1970-01-01
      • 2017-07-16
      • 2019-09-13
      • 2017-05-06
      • 2016-12-29
      • 1970-01-01
      相关资源
      最近更新 更多