从文档目录中读取 Lottie 动画的正确方法是什么
What's the correct way to read Lottie animation from document directory
我正在尝试将 json 存储在文档目录中,然后读取以显示 Lottie 动画。
这是我在文档
中写json的方式
if let documentDirectory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first {
let pathWithFilename = documentDirectory.appendingPathComponent("myJsonString.json")
do {
try jsonString.write(to: pathWithFilename, atomically: true, encoding: .utf8)
} catch {
}
}
我是这样读的
let checkMarkAnimation = AnimationView(filePath: "\(pathWithFilename)")
animationView.contentMode = .scaleAspectFit
self.animationView.addSubview(checkMarkAnimation)
checkMarkAnimation.frame = self.animationView.bounds
checkMarkAnimation.loopMode = .loop
checkMarkAnimation.play()
我完全知道这是有效的 json,当我打印 Data(contentsOf: pathWithFilename) 时,它打印实际的 json 但是当我用 AnimationView(filePath:) 在动画中分配它时没用。
您使用文件路径的方式存在问题。由于 pathWithFilename 是 URL,而不是像 "\(pathWithFilename)"
那样使用它,您应该像 - pathWithFilename.path
.
那样使用它
以下内容适合您,
let checkMarkAnimation = AnimationView(filePath: pathWithFilename.path)
animationView.contentMode = .scaleAspectFit
self.animationView.addSubview(checkMarkAnimation)
checkMarkAnimation.frame = self.animationView.bounds
checkMarkAnimation.loopMode = .loop
checkMarkAnimation.play()
我正在尝试将 json 存储在文档目录中,然后读取以显示 Lottie 动画。
这是我在文档
中写json的方式 if let documentDirectory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first {
let pathWithFilename = documentDirectory.appendingPathComponent("myJsonString.json")
do {
try jsonString.write(to: pathWithFilename, atomically: true, encoding: .utf8)
} catch {
}
}
我是这样读的
let checkMarkAnimation = AnimationView(filePath: "\(pathWithFilename)")
animationView.contentMode = .scaleAspectFit
self.animationView.addSubview(checkMarkAnimation)
checkMarkAnimation.frame = self.animationView.bounds
checkMarkAnimation.loopMode = .loop
checkMarkAnimation.play()
我完全知道这是有效的 json,当我打印 Data(contentsOf: pathWithFilename) 时,它打印实际的 json 但是当我用 AnimationView(filePath:) 在动画中分配它时没用。
您使用文件路径的方式存在问题。由于 pathWithFilename 是 URL,而不是像 "\(pathWithFilename)"
那样使用它,您应该像 - pathWithFilename.path
.
以下内容适合您,
let checkMarkAnimation = AnimationView(filePath: pathWithFilename.path)
animationView.contentMode = .scaleAspectFit
self.animationView.addSubview(checkMarkAnimation)
checkMarkAnimation.frame = self.animationView.bounds
checkMarkAnimation.loopMode = .loop
checkMarkAnimation.play()