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。 这使我可以快速放入不同大小和颜色的图像,而没有任何麻烦。