You were entirely correct so thanks again. I went down the documentation rabbit hole and couldn't find anything more suitable. I ended up overlaying the entire board grid (rather than the grid cells) and used the position modifier to place the pieces on the correct square. This required me to write functions that would map between a CGPoint and a discrete square on the board. For now I'm using a fixed sized board frame but I am confident I'll be able to adapt to a dynamically sized board.
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: