import RiveRuntime
let viewModel = RiveViewModel(
fileName: "simple_assets",
autoPlay: false,
loadCdn: false,
customLoader: { (asset: RiveFileAsset, data: Data, factory: RiveFactory) -> Bool in
// Handle image assets
if let imageAsset = asset as? RiveImageAsset {
guard let url = Bundle.main.url(
forResource: asset.uniqueName(),
withExtension: "jpeg"
) else {
print("Failed to locate '\(asset.uniqueName())' in bundle")
return false
}
guard let imageData = try? Data(contentsOf: url) else {
print("Failed to load \(url) from bundle")
return false
}
imageAsset.renderImage(factory.decodeImage(imageData))
return true
}
// Handle font assets
if let fontAsset = asset as? RiveFontAsset {
guard let url = Bundle.main.url(
forResource: asset.uniqueName(),
withExtension: asset.fileExtension()
) else {
print("Failed to locate '\(asset.uniqueName())' in bundle")
return false
}
guard let fontData = try? Data(contentsOf: url) else {
print("Failed to load \(url) from bundle")
return false
}
fontAsset.font(factory.decodeFont(fontData))
return true
}
return false
}
)