@@ -230,8 +230,30 @@ package class UIHostingViewBase {
230230 }
231231 }
232232
233+ @inline ( __always)
234+ func updateTransform( ) {
235+ guard let uiView else {
236+ return
237+ }
238+ if !viewGraph. invalidateTransform ( ) , registeredForGeometryChanges {
239+ uiView. _unregisterForGeometryChanges ( )
240+ registeredForGeometryChanges = false
241+ }
242+ }
243+
233244 package func updateTransformWithoutGeometryObservation( ) {
234- _openSwiftUIUnimplementedFailure ( )
245+ guard let uiView else {
246+ return
247+ }
248+ let wasRegisteredForGeometryChanges = registeredForGeometryChanges
249+ if !viewGraph. invalidateTransform ( ) , registeredForGeometryChanges {
250+ uiView. _unregisterForGeometryChanges ( )
251+ registeredForGeometryChanges = false
252+ }
253+ if !wasRegisteredForGeometryChanges, registeredForGeometryChanges {
254+ uiView. _unregisterForGeometryChanges ( )
255+ registeredForGeometryChanges = false
256+ }
235257 }
236258
237259 @inline ( __always)
@@ -510,7 +532,14 @@ package class UIHostingViewBase {
510532 }
511533
512534 package func _geometryChanged( _: UnsafeRawPointer , forAncestor: UIView ? ) {
513- _openSwiftUIUnimplementedFailure ( )
535+ guard let host else {
536+ return
537+ }
538+ if registeredForGeometryChanges {
539+ host. invalidateProperties ( . transform, mayDeferUpdate: false )
540+ } else if !options. contains ( . registeredForGeometryChanges) {
541+ Log . internalError ( " Received _geometryChanged with no registration for \( self ) . " )
542+ }
514543 }
515544
516545 package func layoutSubviews( ) {
0 commit comments