我跟随this tutorial给Xcode添加了一个gif。
我从头到尾都读过this的经典答案“出乎意料地发现零”。不幸的是,我发现它是胡言乱语,因为我是一个彻头彻尾的菜鸟。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var imageNames = ["giphy-1 .jpg","giphy-2 .jpg", "giphy-3 .jpg", "giphy-4 .jpg", "giphy-5 .jpg"]
var images = [UIImage]()
for i in 0..<imageNames.count{
images.append(UIImage(named: imageNames[i])!)
}
theGif.animationImages = images
theGif.animationDuration = 1.0
theGif.startAnimating()在最后。但这并不管用。
*(如果你对我一无所知感到困扰,请知道我已经尝试过代码学院,自由代码营,可汗学院编码,并开始了多本书,但我想我是am...hopeless?我试过了。
发布于 2016-07-30 06:46:03
正如你所说的,到目前为止,你的错误在StackOverflow中是一个经典的错误,我将告诉你如何避免,当然还有为什么你要面对它。
让我们从错误的根源开始,您使用的是类UIImage的failable初始化器,这意味着这个初始化可以返回nil。
根据Apple的说法
返回指定文件的图像对象,如果该方法找不到指定的图像,则返回
nil。
儿子,在您的示例中,无法在应用程序的主包中找到具有该名称的图像。
为了避免运行时错误,建议您始终使用optional-binding而不是强制解包可选值,如下所示:
var imageNames = ["giphy-1 .jpg","giphy-2 .jpg", "giphy-3 .jpg", "giphy-4 .jpg", "giphy-5 .jpg"]
var images = [UIImage]()
for i in 0..<imageNames.count{
if let image = UIImage(named: imageNames[i]) {
images.append(image)
}
}我希望这对你有帮助。
发布于 2016-07-30 07:09:58
针对您的情况的错误是由以下行引起的:
var imageNames = ["giphy-1 .jpg","giphy-2 .jpg", "giphy-3 .jpg", "giphy-4 .jpg", "giphy-5 .jpg"]您需要删除图像名称和图像格式之间的空格,因此将变为:
var imageNames = ["giphy-1.jpg", "giphy-2.jpg", "giphy-3.jpg", "giphy-4.jpg", "giphy-5.jpg"]这就是我第一次看到这个问题时我的直觉告诉我的;但为了确定,我决定对这两种情况进行快速测试,这证实了我最初的猜测。
https://stackoverflow.com/questions/38668410
复制相似问题