Contents

convert(_:from:)

Converts the point from the specified layer’s coordinate system to the receiver’s coordinate system.

Declaration

func convert(_ p: CGPoint, from l: CALayer?) -> CGPoint

Parameters

  • p:

    A point specifying a location in the coordinate system of l.

  • l:

    The layer with p in its coordinate system. The receiver and l and must share a common parent layer. This parameter may be nil.

Return Value

The point converted to the receiver’s coordinate system.

Discussion

If you specify nil for the l parameter, this method returns the original point subtracted from the layer’s frame’s origin.

The following example shows code that creates two layers, redLayer and yellowLayer. yellowLayer is scaled so that it is half of its original size.

let layerFrame = CGRect(x: 0, y: 0, width: 640, height: 480)
     
let redLayer = CALayer()
redLayer.frame = layerFrame
redLayer.backgroundColor = UIColor.red.cgColor
     
let yellowLayer = CALayer()
yellowLayer.frame = layerFrame
yellowLayer.backgroundColor = UIColor.yellow.cgColor
yellowLayer.transform = CATransform3DMakeScale(0.5, 0.5, 1)

The following figure shows the two layers and an overlaid point (rendered as a blue cross) with a position of (50.0, 50.0) in the red layer’s coordinate system.

[Image]

The following code shows how you can find the coordinates of that point in the yellow layer’s coordinate system.

let position = CGPoint(x: 50, y: 50)
print(yellowLayer.convert(position, from: redLayer)) // prints (-220.0, -140.0)

See Also

Mapping between coordinate and time spaces