我正在构建一个ios应用程序,其中我有很多图像可以在许多ViewController的ImageView中显示。这就是为什么我必须在项目中添加许多图像。
请告诉我在项目中添加图片的最佳做法。无论我是添加资产还是我项目的其他文件夹。
如果在某个文件夹中添加最佳方法,那么我该如何访问这些图像。
是否可以将所有图像添加到项目的文件夹中并获取这些图像并在UILabels中逐个显示ImageViews及其名称?如果有可能,请告诉我如何做到这一点。
答案 0 :(得分:7)
显然,最好的办法是在xcassets中添加图片。通过单击名为" Images.xcassets"的蓝色文件夹导入图像。然后点击小" +"在出现的窗口底部加号。现在选择"导入"把图像放在那里。它真的很有帮助,因为你只会看到1个图像名称,而不是带有扩展名的重复名称,例如" @ 2x"和" @ 3x"。
为什么这种方法有益
这是组织图像的最佳方式。 App切片的概念适用于此处。
如果您不知道应用程序细化概念是什么,请参阅:
如何加载图片
您可以从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)
}
}