Используя Rob Mayoff's answer to create GIF, я адаптировал его код к следующему в Swift.Почему GIF не замедляется с kCGImagePropertyGIFDelayTime
let kFrameCount:Int = 6
let frames:NSNumber = NSNumber(float: 20000.0) //No matter what number I place here...GIF runs at same speed
let fileProperties = [kCGImagePropertyGIFLoopCount as String: 0]
let frameProperties = [kCGImagePropertyGIFDelayTime as String: frames]
let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as! NSURL
let fileURL = documentsUrl.URLByAppendingPathComponent("animated.gif")
var destination: CGImageDestination = CGImageDestinationCreateWithURL(fileURL, kUTTypeGIF, kFrameCount, nil)
var destination2: Void = CGImageDestinationSetProperties(destination, fileProperties)
for i in 0..<kFrameCount {
CGImageDestinationAddImage(destination, imagessss[i].CGImage, frameProperties)
}
if (!CGImageDestinationFinalize(destination)) {
println("fail")
}
println(fileURL)
let activityVC: UIActivityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: nil)
Это создает GIF. Но независимо от того, какую сумму я размещаю как float
, 20000.0 или 0.01, GIF работает на том же DelayTime. Также, если я изменяю значение в fileProperties
от 0 до любого другого номера, GIF все еще выполняет непрерывный цикл.
Я чувствую, что ошибка заключается в строке
var destination2: Void = CGImageDestinationSetProperties(destination, fileProperties)
или моей декларации fileProperties
и frameProperties
Кто-нибудь знает, почему мой fileProperties
и frameProperties
не влияющие на GIF?
P.S. Я могу эффективно замедлить gif за счет увеличения кадров и шнуровки массива imagessss
с повторяющимися изображениями, но это не идеально.
Интересный фрагмент кода о проблеме задержки: http://stackoverflow.com/a/17824564/ 2227743 – Moritz
не должен delayTime быть врожденным свойством GIF-файла, принятым при написании? – Chameleon
Посмотрите на этот пример: https://gist.github.com/mayoff/4969104 ищите kCGImagePropertyGIFDelayTime –