問題タブ [uitraitcollection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - UIView の UITraitCollection をオーバーライドする
UITabBar
コンパクトな horizontalSizeClass を持つ traitCollection が必要です。通常の horizontalSizeClass では、UITabBar
TabBarIcon と Title を並べてレンダリングするためです。
サブクラスUITabBar
化し、traitCollection ゲッターをオーバーライドして、修正された traitCollection を提供しました。
これは仕事をしますが、警告を下回り始めました
クラス MyTabBar は、サポートされていない -traitCollection ゲッターをオーバーライドします。特性をオーバーライドしようとしている場合は、適切な API を使用する必要があります。
Apple ドキュメントを確認した後、overrideTraitCollection(forChild:)という 1 つの API を見つけ ましたが、UITabBar を保持する viewController には通常の horizontalSizeClass が必要です。
同様の質問も見つけましたが、の traitCollection をオーバーライドするという私の質問には答えませんUIView
。
の traitCollection をオーバーライドしたくはありませんUIViewController
が、UIView
.
の traitCollection をオーバーライドする正しい方法は何UIView
ですか?
ios - ユーザーが設定で外観を変更しても、アプリは更新されず、traitCollectionDidChange は起動しません
私のアプリでは、ユーザーがデバイスに設定されている外観をオーバーライドできるようにしています。システム全体の外観をオーバーライドしたい場合に、UI の更新を処理するクラスを次に示します。
これは機能します - ユーザーがスイッチを切り替えると、アプリは userInterfaceStyle を変更します。問題は、ユーザーがシステム全体の外観を変更した場合 (設定でライト モードまたはダーク モードを設定した場合)、手動で設定した場合にのみ、アプリの外観が自動的に変更されないことです。
したがって、ユーザーがシステム全体で変更したときに何らかの作業を行う必要があると想定しており、traitCollectionDidChange を使用する必要があるようです。問題は、ユーザーが設定で外観を変更したときに起動せず、アプリで手動で設定した場合にのみ発生することです。それをテストするために、viewControllerにこのコードがあります:
手動でオーバーライドすると、「スタイル モードが変更されました」と出力されます。設定に入ってシステム全体の外観を切り替えると、traitCollectionDidChange が起動しません。
ある時点でこれが正常に機能していたことを誓いますが、overrideUserInterfaceStyle を使用して多くのコード変更を焼き尽くしたときに、しばらくの間、いくつかの奇妙な問題を修正しようとしてきました。
明らかな何かが欠けていると思います。ユーザーがオーバーライドできるようにする前は、システム全体で外観が変更されると、コードをまったく使用せずにアプリがバックグラウンドで自動的に切り替わりました。今はそうではなく、traitCollectionDidChange は起動しません。私は何が欠けているか、間違っていますか? 役立つ場合は、より多くのコードを提供してください。
ありがとう!
swiftui - SwiftUI、ビューに traitCollectionDidChange のようなメソッドはありますか?
SwiftUI が当社のユースケースに適合するかどうかを調べています。しかし、私はそれがかなり骨の折れるものであり、いくつかの重要な洞察が欠けているのではないかと考えています.
現在、V/HStack がアクセシビリティのフォントサイズの変更に動的に対応できるかどうかを調査しています。問題は、アイテムにフレームを付ける必要があることです。外側のスタックのアイテムビューの制約が内側のコンテンツに自動的に固定されません。ユーザーが font-size を完全な Bananas-mode に設定すると、UI が壊れます。
struct PatientHistoryView: ビュー {
}
ここにlabDetailViewがあります
UIkit では、これらの問題は traitCollectionDidChange フックで解決できます。ただし、Swift UI では、同等のものを見つけることができません。
誰かアイデアはありますか?
ありがとう!
ios - iOS ダークモード。バックグラウンドで入力すると、ユーザー インターフェース スタイルが前後に変化する
ダークモードをサポートしています。一部のビュー コントローラーでは、traitCollectionDidChange(_)
ユーザー インターフェイス スタイルの変更を処理するために使用しています。
ホームボタンを押してバックグラウンドに移動すると、このメソッドが 2 回起動します。
そして、iOS 設定で外観を変更してフォアグラウンドに戻すと、
変。バックグラウンドに移行するたびに、ユーザー インターフェイスのスタイルが前後に変更されます。なんで?