<!--
{
  "availability" : [
    "iOS: 11.0.0 - 14.0.0",
    "iPadOS: 11.0.0 - 14.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARHitTestResult",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(cs)ARHitTestResult"
  },
  "title" : "ARHitTestResult"
}
-->

# ARHitTestResult

Information about a real-world surface found by examining a point on the screen.

```
class ARHitTestResult
```

## Overview

If you use SceneKit or SpriteKit as your renderer, you can search for real-world surfaces at a screen point using:

- [`ARSCNView`](/documentation/ARKit/ARSCNView) [`hitTest(_:types:)`](/documentation/ARKit/ARSCNView/hitTest(_:types:))
- [`ARSKView`](/documentation/ARKit/ARSKView) [`hitTest(_:types:)`](/documentation/ARKit/ARSKView/hitTest(_:types:))

Otherwise, you can search the camera image for real-world content using the [`ARFrame`](/documentation/ARKit/ARFrame) [`hitTest(_:types:)`](/documentation/ARKit/ARFrame/hitTest(_:types:)) method. Because a frame is independent of a view, for this method you pass a point specified in normalized image coordinates (where `(0,0)` is the top left corner of the image and `(1,1)` is the lower right).

All these methods return an array of [`ARHitTestResult`](/documentation/ARKit/ARHitTestResult) objects describing the content found. The number and order of results in the array depends on the search types you specify and the order you specify them in. For example, consider the code below:

```swift
let results = view.hitTest(point, [.existingPlaneUsingGeometry, .estimatedHorizontalPlane])
```

This [`hitTest(_:types:)`](/documentation/ARKit/ARSCNView/hitTest(_:types:)) call searches first for plane anchors already present in the session (according to the session configuration’s [`planeDetection`](/documentation/ARKit/ARWorldTrackingConfiguration/planeDetection-swift.property) settings); returning any such results (in order of distance from the camera) as the first elements in the array. This call also (due to the [`estimatedHorizontalPlane`](/documentation/ARKit/ARHitTestResult/ResultType/estimatedHorizontalPlane) request) attempts to determine whether the hit test ray intersects any horizontal surface not already found by plane detection, and returns that result (if any) as the last element in the array.

## Topics

### Identifying Results

[`type`](/documentation/ARKit/ARHitTestResult/type)

The kind of detected feature the search result represents.

[`ARHitTestResult.ResultType`](/documentation/ARKit/ARHitTestResult/ResultType)

Possible types for specifying a hit-test search, or for the result of a hit-test search.

[`anchor`](/documentation/ARKit/ARHitTestResult/anchor)

The anchor representing the detected surface, if any.

### Examining Result Geometry

[`distance`](/documentation/ARKit/ARHitTestResult/distance)

The distance, in meters, from the camera to the detected surface.

[`worldTransform`](/documentation/ARKit/ARHitTestResult/worldTransform)

The position and orientation of the result relative to the world coordinate system.

[`localTransform`](/documentation/ARKit/ARHitTestResult/localTransform)

The position and orientation of the result relative to the nearest anchor or feature point.



---

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)