問題タブ [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 - コードで両方のサイズクラスを使用して UITraitCollection を作成する方法は?
私は単純な拡張機能を持っていますUITraitCollection
:
以前は、このためのテストを作成する必要がありました (TDD を使用):
しかし、エラーは次のとおりです。
プロパティに割り当てることができません:
horizontalSizeClass
は取得専用のプロパティです。
じゃあどうすればいいの?
ios - ネストされた子View Controller内から画面の現在のサイズクラスを確認するにはどうすればよいですか?
アプリに複数の子ビュー コントローラーを含む画面があります。iPhone のような小さい画面サイズでは、View Controller は互いに平らに配置されます。iPad の画面サイズでは、View Controller の 1 つが他のビュー コントローラーの上に浮かんでいます。
時々浮くView Controllerが、浮いているときに角の半径しか持たないようにしたいのです。したがって、サイズクラスが縦向きまたは横向きのiPad用のwRegular、hRegularであるかどうかに基づいて、ビューのコーナー半径を設定するために、または子ビューコントローラのviewDidLoad
ようなメソッドをオーバーライドすることを検討しました。overrideTraitCollection(forChildViewController:)
ただし、子View ControllerにはルートView Controllerと同じサイズのクラス値が設定されていないようで、階層を上ってparentViewController
も、それらの値を持つView Controllerにたどり着けないようです。
子ビュー コントローラーからビュー階層の最上位の現在のサイズ クラスにアクセスするにはどうすればよいですか?
編集: UIScreen を使用して既存の回答を試しましたが、私のアプリが唯一の目に見えるアプリである場合にうまく機能します。ただし、アプリを分割画面モードで実行すると、正しくない動作が発生します。アプリが狭い場合でも、常に Regular/Regular を返します。アプリが表示されている画面の一部だけのサイズ クラスを取得するソリューションはありますか?
ios - アプリ拡張機能の UIApplication.shared.preferredContentSizeCategory に相当
私のオープン ソース ライブラリは、 を呼び出すことができる必要がありますUIApplication.shared.preferredContentSizeCategory
。ただしUIApplication.shared
、拡張機能では使用できません。ビルド エラーは、問題を解決するビュー コントローラー ベースの方法を見つけたことを示していますが、ライブラリを作成しているため、ビュー コントローラーにアクセスできません。拡張機能のルート ビュー コントローラーを取得する方法、または最も外側のビュー コントローラーを取得する方法はありUITraitEnvironment
ますか?
私は iOS 9 以降をサポートしていますが、それが可能であれば、この機能は 10 以降になる可能性があります。
ios - サイズクラスが適切に設定されるのはいつですか?
単体テストでいくつかのサイズ クラス固有の特性をテストしようとしていますが、サイズ クラスが で適切に設定されていないという問題が発生していますawakeFromNib
。アプリを実行すると、すべてが画面に表示された後に LLDB で検査することで正しく設定されますが、単体テストの実行中に設定されているサイズ クラスをトリガーすることはできません。
特性コレクションがいつ設定されるか、またはそれをトリガーする方法についての情報はありますか?
編集:明確にするために、これらはビューのみをテストする単体テストであり、ビューが含まれているViewControllerではありません。したがって、ビューをペン先からロードして、テストを実行しています。
layoutSubviews()
ある種のサイズクラス設定をトリガーすることを期待して呼び出しを試みましたが、機能しませんでした。traitCollectionDidChange
スタックトレースにブレークポイントを配置すると、そこにあるだけmain
なので、実際に何がトリガーされているのかわかりません。