Files
burstein 71f634bec4 DivKit SwiftUI Sample App
commit_hash:89fe30647b25dbbfb4349af0173ca6023d3a2e29
2025-07-04 00:17:17 +03:00

43 lines
1.2 KiB
Swift

import DivKit
import DivKitExtensions
import UIKit
final class DivHostViewController: UIViewController {
lazy var divKitComponents = makeDivKitComponents()
lazy var divView = DivView(divKitComponents: divKitComponents)
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(divView)
Task {
await configureDivView()
}
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
divView.frame = view.bounds.inset(by: view.safeAreaInsets)
}
private func configureDivView() async {
let url = Bundle.main.url(forResource: "Sample", withExtension: "json")!
let data = try! Data(contentsOf: url)
await divView.setSource(
.init(kind: .data(data), cardId: "Sample"),
debugParams: DebugParams(isDebugInfoEnabled: true)
)
}
private func makeDivKitComponents() -> DivKitComponents {
let extensionHandlers = [PinchToZoomExtensionHandler(overlayView: view)]
let customBlockFactory = SampleDivCustomBlockFactory()
let urlHandler = SampleDivActionHandler(hostViewController: self)
return DivKitComponents(
divCustomBlockFactory: customBlockFactory,
extensionHandlers: extensionHandlers,
urlHandler: urlHandler
)
}
}