init(url:content:placeholder:)
Loads and displays a modifiable model from the specified URL using a custom placeholder until the model loads.
Declaration
nonisolated init<Model, Placeholder>(url: URL, @ViewBuilder content: @escaping (ResolvedModel3D) -> Model, @ViewBuilder placeholder: @escaping () -> Placeholder) where Content == Model3DPlaceholderContent<Model, Placeholder>, Model : View, Placeholder : ViewParameters
- url:
The URL of the model to display.
- content:
A closure that takes the loaded model as an input, and returns the view to show. You can return the model directly, or modify it as needed before returning it.
- placeholder:
A closure that returns the view to show until the load operation completes successfully.
Discussion
Until the model loads, Model3D displays the placeholder view that you specify. When the load operation completes successfully, Model3D updates the view to show content that you specify, which you create using the loaded model. For example, you can show a green placeholder, followed by a scaled version of the loaded model:
let url = URL(string: "https://example.com/robot.usdz")!
Model3D(url: url) { model in
model.resizable()
} placeholder: {
Color.green
}If the load operation fails, Model3D continues to display the placeholder. To be able to display a different view on a load error, use the init(url:transaction:content:) initializer instead.