iOS Developer Library — Pre-Release

Developer

UIKit Framework Reference UICoordinateSpace Protocol Reference

Options
Deployment Target:

On This Page
Language:

UICoordinateSpace

Inheritance


Not Applicable

Conforms To


Import Statement


Swift

import UIKit

Objective-C

@import UIKit;

Availability


Available in iOS 8.0 and later.

The UICoordinateSpace protocol defines methods for converting between different frames of reference on a screen. The UIView and UIScreen classes adopt this protocol so that you can convert easily between most coordinate spaces in your app. The UIScreen class also provides coordinate space with a fixed frame of reference for tasks that require it. You can adopt this protocol in your own classes to convert between your custom coordinate spaces and the coordinate spaces of your app’s views and screens.

Prior to iOS 8, window and screen coordinates were fixed and always specified relative to the device’s screen in a portrait orientation. Even when the user rotated the device, window and screen coordinates never changed because the window and screen coordinate spaces never rotated. Instead, the views installed in those windows rotated depending on whether their owning view controller supported the given device orientation. Because the window and screen coordinates never changed, apps always had a fixed frame of reference for coordinates.

In iOS 8 and later, window and screen coordinate spaces are no longer fixed to a specific device orientation. Instead, window and screen coordinates change to match the app’s interface orientation, which typically (but not always) matches the current device orientation. (View controllers still determine which interface orientations the app supports.) Rotating the window and screen simplifies the interactions between views, windows, and the screen. In cases where you still need a fixed frame of reference—for example, because you need to store the location of a touch event or onscreen item persistently—you can use the methods of this protocol to convert coordinate values to the fixed coordinate space provided by the UIScreen object.

To convert a point from a view’s current coordinate space to the screen’s fixed coordinate space, use code similar to the following:

  • [myView convertPoint:point toCoordinateSpace:myView.window.screen.fixedCoordinateSpace];

When implementing the methods of this protocol, you must convert coordinate values to or from your local coordinate space. When performing such conversions, use the screen coordinate space as an intermediate coordinate space, converting to screen coordinates before converting to the target coordinate space. For example, when converting from your local coordinate space to the coordinate space of another view, convert your local coordinates to the screen coordinate space first and then convert those screen coordinates to the coordinate space of the view.

  • bounds bounds Property

    The bounds rectangle describing the item’s location and size in its own coordinate system. (required) (read-only)

    Declaration

    Swift

    var bounds: CGRect { get }

    Objective-C

    @property(readonly, nonatomic) CGRect bounds

    Discussion

    The rectangle in this property always matches the app’s interface orientation. For apps that support all interface orientations, the value in this property can change when the user rotates the device between portrait and landscape modes.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 8.0 and later.

  • Converts a point from the coordinate space of the current object to the specified coordinate space. (required)

    Declaration

    Swift

    func convertPoint(_ point: CGPoint, toCoordinateSpace coordinateSpace: UICoordinateSpace) -> CGPoint

    Objective-C

    - (CGPoint)convertPoint:(CGPoint)point toCoordinateSpace:(id<UICoordinateSpace>)coordinateSpace

    Parameters

    point

    A point specified in the coordinate system of the current object.

    coordinateSpace

    The coordinate space into which point is to be converted.

    Return Value

    A point specified in the target coordinate space.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 8.0 and later.

  • Converts a point from the specified coordinate space to the coordinate space of the current object. (required)

    Declaration

    Swift

    func convertPoint(_ point: CGPoint, fromCoordinateSpace coordinateSpace: UICoordinateSpace) -> CGPoint

    Objective-C

    - (CGPoint)convertPoint:(CGPoint)point fromCoordinateSpace:(id<UICoordinateSpace>)coordinateSpace

    Parameters

    point

    A point in the specified coordinate space.

    coordinateSpace

    The coordinate space in which point is specified.

    Return Value

    A point specified in the coordinate space of the current object.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 8.0 and later.

  • Converts a rectangle from the coordinate space of the current object to the specified coordinate space. (required)

    Declaration

    Swift

    func convertRect(_ rect: CGRect, toCoordinateSpace coordinateSpace: UICoordinateSpace) -> CGRect

    Objective-C

    - (CGRect)convertRect:(CGRect)rect toCoordinateSpace:(id<UICoordinateSpace>)coordinateSpace

    Parameters

    rect

    A rectangle specified in the coordinate system of the current object.

    coordinateSpace

    The coordinate space into which rect is to be converted.

    Return Value

    A rectangle specified in the target coordinate space.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 8.0 and later.

  • Converts a rectangle from the specified coordinate space to the coordinate space of the current object. (required)

    Declaration

    Swift

    func convertRect(_ rect: CGRect, fromCoordinateSpace coordinateSpace: UICoordinateSpace) -> CGRect

    Objective-C

    - (CGRect)convertRect:(CGRect)rect fromCoordinateSpace:(id<UICoordinateSpace>)coordinateSpace

    Parameters

    rect

    A rectangle in the specified coordinate space.

    coordinateSpace

    The coordinate space in which rect is specified.

    Return Value

    A rectangle specified in the coordinate space of the current object.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 8.0 and later.