How to clip a view so only part is visible
How to clip a view so only part is visible êŽë š
Updated for Xcode 15
SwiftUI lets you clip any view to control its shape, all by using the clipShape()
modifier.
For example this creates a button using the system image âbolt.fillâ (a filled lightning bolt), gives it some padding and a background color, then clips it using a circle so that we get a circular button:
Button {
print("Button was pressed!")
} label: {
Image(systemName: "bolt.fill")
.foregroundStyle(.white)
.padding()
.background(.green)
.clipShape(Circle())
}
The Circle
clip shape will always make circles from views, even if their width and height are unequal â it will just crop the larger value to match the small.
As well as Circle
thereâs also Capsule
, which crops a view to have rounded corners in a lozenge shape. For example, this creates the same button using a capsule shape:
Button {
print("Pressed!")
} label: {
Image(systemName: "bolt.fill")
.foregroundStyle(.white)
.padding(EdgeInsets(top: 10, leading: 20, bottom: 10, trailing: 20))
.background(.green)
.clipShape(Capsule())
}
I added some more precise padding there to get a better shape â you should experiment to find something you like.