import SwiftUI struct SizeKey: PreferenceKey { static func reduce(value: inout CGSize?, nextValue: () -> CGSize?) { value = value ?? nextValue() } } struct ContentView: View { @State var width: CGFloat? = nil var body: some View { let button = Text("Neu Starten") .fixedSize() .padding(10) .background(GeometryReader { proxy in Color.clear.preference(key: SizeKey.self, value: proxy.size) }) .frame(width: width, height: width) .background( Circle() .fill(Color.blue) ) .onPreferenceChange(SizeKey.self) { size in self.width = size?.width } return button.mirror() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }