Skip to content

Layer Management

In this example, we will show you how to use the CreativeEditor SDK’s CreativeEngine to modify the hierarchy of blocks through the block API.

Manipulate the hierarchy of blocks

public func getParent(_ id: DesignBlockID) throws -> DesignBlockID?

Query a block’s parent.

  • id:: The block to query.
  • Returns: The parent’s handle or nil if the block has no parent.
public func getChildren(_ id: DesignBlockID) throws -> [DesignBlockID]

Get all children of the given block. Children are sorted in their rendering order: Last child is rendered in front of other children.

  • id:: The block to query.
  • Returns: A list of block ids.
public func insertChild(into parent: DesignBlockID, child: DesignBlockID, at index: Int) throws

Insert a new or existing child at a certain position in the parent’s children. Required scope: “editor/add”

  • parent: The block whose children should be updated.
  • child: The child to insert. Can be an existing child of parent.
  • index: The index to insert or move to.
public func appendChild(to parent: DesignBlockID, child: DesignBlockID) throws

Appends a new or existing child to a block’s children. Required scope: “editor/add”

  • parent: The block whose children should be updated.
  • child: The child to insert. Can be an existing child of parent.

When adding a block to a new parent, it is automatically removed from its previous parent.

Full Code

Here’s the full code:

try engine.block.insertChild(into: page, child: block, at: 0)
let parent = try engine.block.getParent(block)
let childIds = try engine.block.getChildren(block)
try engine.block.appendChild(to: parent!, child: block)