タグ

ブックマーク / jierong.dev (1)

  • SwiftUIで子ビューのframeを取得

    UIKitの場合は適切なタイミングでUIView.frameから取得できるし、Auto Layoutで制約つけていれば、具体的なframeを取得しなくても、大体な目的は達成できます。SwiftUIの場合はGeometryReaderで親ビューのframeを取得することは可能ですが、子ビューのframeを取得するに別の手法が必要です。 親の方に情報伝達 直接に子ビューのframeを取得することができませんので、子ビュー側で取得してから親に伝達する必要があります。 子の方に伝達するにはenvironmentという仕組みで、逆方向の場合はpreferenceという仕組みがあります。 Preferenceを使うにはPreferenceKeyを実装する必要があります。 struct FramePreferenceKey: PreferenceKey { static var defaultValue

  • 1