<!--
{
  "availability" : [
    "macOS: 10.7.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSView/frame(forAlignmentRect:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSView(im)frameForAlignmentRect:"
  },
  "title" : "frame(forAlignmentRect:)"
}
-->

# frame(forAlignmentRect:)

Returns the view’s frame for a given alignment rectangle.

```
func frame(forAlignmentRect alignmentRect: NSRect) -> NSRect
```

## Parameters

`alignmentRect`

The alignment rectangle whose corresponding frame is desired.

## Return Value

The frame for the specified alignment rectangle

## Discussion

The constraint-based layout system uses alignment rectangles to align views, rather than their frame. This allows custom views to be aligned based on the location of their content while still having a frame that encompasses any ornamentation they need to draw around their content, such as shadows or reflections.

The default implementation returns `alignmentRect` modified by the insets specified by the view’s [`alignmentRectInsets`](/documentation/AppKit/NSView/alignmentRectInsets) method. Most custom views can override [`alignmentRectInsets`](/documentation/AppKit/NSView/alignmentRectInsets) to specify the location of their content within their frame. Custom views that require arbitrary transformations can override [`alignmentRect(forFrame:)`](/documentation/AppKit/NSView/alignmentRect(forFrame:)) and [`frame(forAlignmentRect:)`](/documentation/AppKit/NSView/frame(forAlignmentRect:)) to describe the location of their content. These two methods must always be inverses of each other.

---

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)