Swift中的随机远程映像

在为JAM iOS应用程序开发一项新功能时,我需要模拟出将由我们的API返回的对象。 具体来说,我想要一定尺寸的随机图像。 可以轻松地完成很多工作-我只是结合了不同的现有解决方案来解决我的问题。

我使用随机颜色和placehold.it的组合来模拟图像。

Placeholdit使用以下格式返回特定大小和可选颜色的图像: http://placehold.it/{width}x{height}/{hex_color} : http://placehold.it/{width}x{height}/{hex_color} 。 我需要一个静态的宽度和高度(400×400),并且需要一个随机的颜色。

首先,我利用了已经拥有的CGFloat扩展名:

 扩展名CGFloat { 
静态函数random()-> CGFloat {
返回CGFloat(arc4random())/ CGFloat(UInt32.max)
}
}

这使我可以编写CGFloat.random()来获得介于0和1之间的随机浮点数。

接下来,我使用从StackOverflow找到的UIColor扩展来生成随机颜色(使用相同的CGFloat扩展):

 extension UIColor { 
static func random() -> UIColor {
return UIColor(red: .random(),
green: .random(),
blue: .random(),
alpha: 1.0)
}
}

这使我可以编写UIColor.random()以获得随机颜色- UIColor.random()酷了!

我需要做的最后一件事是获取该颜色的十六进制代码。 StackOverflow再次解救!

 var hexString: String { 
let colorRef = cgColor.components
let r: CGFloat = colorRef[0]
let g: CGFloat = colorRef[1]
let b: CGFloat = colorRef[2]
return NSString(format: "%02lX%02lX%02lX", lroundf(Float(r * 255)), lroundf(Float(g * 255)), lroundf(Float(b * 255))) as String
}

(从StackOverflow帖子稍作修改以提高可读性)

这使我可以编写UIColor.random().hexString以获得颜色的6位十六进制表示形式。

现在,我需要做的就是将此与URL结合起来以获取随机的远程图像:

 让randomColorHex = UIColor.random()。hexString 
让url = URL(string:“
http://placehold.it/400x400/\(randomColorHex)“)

有了这个,我有一个网址: http://placehold.it/400x400/0015AE : http://placehold.it/400x400/0015AE ,它生成此图像:

在为JAM iOS应用程序构建新功能时,很多时候我们需要模拟API响应,尤其是它们返回的图像URL。 这使我可以快速放入不同大小和颜色的图像,而没有任何麻烦。