自動的な特徴追跡 ノート

自動的な特徴追跡

iOS 18では、UIKitが自動トレイト追跡を導入し、レイアウト更新メソッドでトレイト変更通知を手動で登録する必要がなくなりました。この機能は、UIViewのlayoutSubviews、updatesConstraints、drawなどのメソッド、およびUIViewControllerのviewWillLayoutSubviewsとupdateViewConstraintsなどのメソッドでサポートされています。UIKitがこれらのメソッドのいずれかを呼び出すと、どのトレイトにアクセスしたかを記録し、トレイトが変更されたときにビューを自動的に無効にします。これは、setNeedsLayout、setNeedsUpdateConstraints、setNeedsDisplay、またはsetNeedsUpdateConfigurationなどのメソッドを使用して行われます。たとえば、UIViewのサブクラスでdrawをオーバーライドし、preferredContentSizeCategoryトレイトにアクセスすると、トレイトが変更されたときに自動的にsetNeedsDisplayが呼び出されます。iOS 18以前は、開発者はトレイト変更を手動で登録し、setNeedsDisplayを呼び出してdrawを呼び出す必要がありました。しかし、自動トレイト追跡では、このプロセスはUIKitによって自動的に処理されます。この機能により、トレイト変更に応じるプロセスが簡素化され、必要なコード量が減ります。自動トレイト追跡は、iOS 18の重要な改善点であり、開発者が適応性の高いユーザーインターフェイスを作成することを容易にします。