<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RoomPlan",
  "identifier" : "/documentation/RoomPlan/RoomCaptureView",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "RoomPlan"
    ],
    "preciseIdentifier" : "c:@M@RoomPlan@objc(cs)RoomCaptureView"
  },
  "title" : "RoomCaptureView"
}
-->

# RoomCaptureView

A view that enables the user to scan their room with the device’s camera.

```
@MainActor @objc @preconcurrency class RoomCaptureView
```

## Overview

This class provides your app with a view that manages the scan process from start to finish, including:

- A camera feed that users look through to see their room in AR.
- Real-time graphic overlays that display on top of physical structures in the room to convey scanning progress.
- User instructions that explain how to position the device, if the framework requires a specific kind of device movement or perspective to complete the capture.

When the app determines that the current scan is complete, the view displays a small-scale version of the scanned room for the user to approve.

Alternatively, your app can display custom graphics during the scanning process by creating and using a scan session object ([`RoomCaptureSession`](/documentation/RoomPlan/RoomCaptureSession)) directly.

See [Create a 3D model of an interior room by guiding the user through an AR experience](/documentation/RoomPlan/create-a-3d-model-of-an-interior-room-by-guiding-the-user-through-an-ar-experience) for a sample code project that demonstrates `RoomCaptureView`.

## Topics

### Creating a room-capture view

[`init(frame:arSession:)`](/documentation/RoomPlan/RoomCaptureView/init(frame:arSession:))

Creates a room-capture view with the given AR session.

[`init(frame:)`](/documentation/RoomPlan/RoomCaptureView/init(frame:))

Creates a view that sizes to the specified frame.

[`init(coder:)`](/documentation/RoomPlan/RoomCaptureView/init(coder:))

Creates a view by deserializing from the specified coder.

### Reacting to scan events

[`captureSession`](/documentation/RoomPlan/RoomCaptureView/captureSession)

An object that notifies a delegate of particular events in the room-scanning life cycle.

[`delegate`](/documentation/RoomPlan/RoomCaptureView/delegate)

An object that determines whether to post-process the results of a scan.

### Displaying scan progress

[`isModelEnabled`](/documentation/RoomPlan/RoomCaptureView/isModelEnabled)

A Boolean value that determines whether the view displays a miniature rendering of the scanned room at the bottom of its bounds.

### Accessing view features

[`subviews`](/documentation/RoomPlan/RoomCaptureView/subviews)

An array that contains the view’s subviews.

[`layoutSubviews()`](/documentation/RoomPlan/RoomCaptureView/layoutSubviews())

Instructs the view’s subviews to position within the view.

[`encode(with:)`](/documentation/RoomPlan/RoomCaptureView/encode(with:))

Serializes the view to the specified coder.

[`traitCollectionDidChange(_:)`](/documentation/RoomPlan/RoomCaptureView/traitCollectionDidChange(_:))

Notifies the view when the device orientation changes.

## Relationships

### Conforms To

[`UIFocusEnvironment`](/documentation/UIKit/UIFocusEnvironment)

[`UIActivityItemsConfigurationProviding`](/documentation/UIKit/UIActivityItemsConfigurationProviding)

[`CLBodyIdentifiable`](/documentation/CoreLocation/CLBodyIdentifiable)

[`UIFocusItem`](/documentation/UIKit/UIFocusItem)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSTouchBarProvider`](/documentation/AppKit/NSTouchBarProvider)

[`UICoordinateSpace`](/documentation/UIKit/UICoordinateSpace)

[`UIAppearanceContainer`](/documentation/UIKit/UIAppearanceContainer)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CVarArg`](/documentation/Swift/CVarArg)

[`UIPasteConfigurationSupporting`](/documentation/UIKit/UIPasteConfigurationSupporting)

[`UILargeContentViewerItem`](/documentation/UIKit/UILargeContentViewerItem)

[`CALayerDelegate`](/documentation/QuartzCore/CALayerDelegate)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`Equatable`](/documentation/Swift/Equatable)

[`UITraitChangeObservable-67e94`](/documentation/UIKit/UITraitChangeObservable-67e94)

[`UIDynamicItem`](/documentation/UIKit/UIDynamicItem)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`UITraitEnvironment`](/documentation/UIKit/UITraitEnvironment)

[`UIUserActivityRestoring`](/documentation/UIKit/UIUserActivityRestoring)

[`UIAccessibilityIdentification`](/documentation/UIKit/UIAccessibilityIdentification)

[`UIResponderStandardEditActions`](/documentation/UIKit/UIResponderStandardEditActions)

[`Hashable`](/documentation/Swift/Hashable)

[`UIFocusItemContainer`](/documentation/UIKit/UIFocusItemContainer)

[`UIPopoverPresentationControllerSourceItem`](/documentation/UIKit/UIPopoverPresentationControllerSourceItem)

[`UIAppearance`](/documentation/UIKit/UIAppearance)

[`CMBodyIdentifiable`](/documentation/CoreMotion/CMBodyIdentifiable)

### Inherits From

[`UIView`](/documentation/UIKit/UIView)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)