問題タブ [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.
ios8 - UIPresentationController は、別のビュー コントローラーがその上に表示されるとサイズが変わります
UIPresentationController を使用してモーダル ビュー コントローラーを提示しています。次の方法を使用して、presentedViewのフレームをcontainViewの境界よりも小さく設定しています:
この時点まで、すべてがうまく機能します。
ここで、画面全体を占める現在表示されているモーダル ビュー コントローラーの上に、別のビュー コントローラーをモーダル (デフォルトではカスタム) で表示します。したがって、画面全体をカバーするデフォルトのモーダル ビュー コントローラーの下にカスタム モーダル ビュー コントローラーがあります。
問題は、画面全体をカバーしているトップビューコントローラーを閉じると、カスタムビューコントローラーも画面全体をカバーして表示されることです。カスタム ビュー コントローラーのサイズを同じ (containerView より小さい) に維持したい。これを達成する方法はありますか。
どんな助けでもいただければ幸いです
ios - UISplitViewController: コンパクトからレギュラーに回転するときに拡張を防止する方法
補完的な質問に対する多くの回答があります。これは、インターフェイスの変更PrimaryOverLay
からRegular
への移行を防ぐ方法です。Compact
私の場合、詳細ビューが縦向きに表示された iPhone 6+ を使用しています。Compact
デバイスを水平 (に)に回転させたときにRegular
、プライマリ ビューを非表示にしたままにします。preferredDisplayMode
多くの場所でtoを設定しようとしまし.PrimaryHidden
たが、明らかな影響はありません。グーグルは何も見つかりませんでした。
ios - iPad の UITraitCollection と UISplitViewController
を使用して iPad アプリを設計していUISplitViewController
ます。UISplitViewController
マスター ビュー コントローラー (つまり、左側の薄いビュー) が を介して常に表示されるように構成しsplitViewController.preferredDisplayMode = .AllVisible
ました。
詳細ビューコントローラーはUICollectionView
、iPadが縦向きか横向きかによって表示方法を変えたいと思っています。縦向きの場合は、コレクション ビューに 1 つの列のみを表示します (に似ていますUITableView
)。横向きの場合は、より多くの水平方向の画面領域を使用できるため、複数の列を表示します。そのコレクション ビューのデータ ソースとデリゲートを実装するクラス内のいくつかの条件を使用して、これを実行できると考えました。
アプリがiPhoneなどでも動作するようにサイズクラスと特性を使用したいので(同じ特性が発生した場合)、デバイスの向きを確認したくありません。
各View Controllerにプロパティがあることは知っていtraitCollection
ますが、メソッドでこのプロパティを印刷すると、iPadの最初の向きに関係なく、viewDidAppear
常にView Controllerが_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular
.
iPadが縦向きの場合はこれが予想されますが、最初は横向きの場合でもこれが印刷されます-ただし、その向きは水平および垂直サイズのクラスであるRegular
と予想されます.Regular
さらに、View Controller にメソッドを実装するtraitCollectionDidChange:
と、回転時に呼び出されたり、詳細 View Controller の展開ボタンがタップされてマスター View Controller が非表示になったりしても呼び出されません (詳細 View Controller をフルスクリーンにします)。
それで、私の質問は、分割ビューコントローラー内のビューコントローラーのサイズクラス/特性の変更をどのように検出できるかです...または、これは完全に間違っていますか?
応答のサンプル コードの目的のために、アプリは iOS 9 を対象とする Swift で記述されています。
助けてくれてありがとう!
ios8 - traitCollection と size クラスに関して、ランドスケープは左または右ですか?
アダプティブ UI を作成するために、Auto Layout、UITraitCollection、および size クラスを学習しました。しかし、私は1つのことが欠けていることを理解しています。
簡単に言えば、ネイティブのカメラ アプリと同じように、UI をホーム ボタンに固定したいということです。これを行うには、「H:[view]-0-|」のような制約文字列を指定します。しかし、アプリを横向きの左右の位置で起動すると、ビューのレイアウトが異なります。したがって、サイズ クラスに関する情報が十分でないことを意味します。サイズクラスに関して、左右の風景などというものはありません。
UIDevice.currentDevice().orientation などのプロパティがあります。しかし、それは非推奨です。
では、ビューをホーム ボタンに貼り付けることができるように、向きが横向きであるか右向きであるかを特性とサイズ クラスの観点からどのように判断すればよいでしょうか?
ios - 予期しないナビゲーション ポップ アニメーション - 画面から飛び出す
UINavigationController
のデフォルトのポップ アニメーションが予期しない動作をするという問題が発生しています。
この問題は、コントローラーのUITraitCollection
.
私はユニバーサルアプリを持っていUIPresentationController
ます.iPadでは、ナビゲーションを部分モーダルで表示するカスタムがあり、その幅は画面幅の一部です。したがって、のプロパティでをオーバーライドしhorizontalSizeClass
てコンパクトにするので、この「ハーフ モーダル」に表示されるすべてのコントローラーは iPhone レイアウトを想定します。UIPresentationController
overrideTraitCollection
そのサイズ クラスをオーバーライドすると、バグが発生するようです。突然、その「ハーフモーダル」内でコントローラーをポップすると、アニメーションが横向きでめちゃくちゃになります (左または右にジャンプします)。
試み
まず、オーバーライドを取り除くとtraitCollection
、バグはなくなります。ただし、これらのビューは通常の環境でも他の場所で再利用されるため、水平サイズ クラスをオーバーライドしたいのは明らかです。
horizontalSizeClass
したがって、次のように、モーダルの子の を他の方法でオーバーライドしようとしました。
- モーダル Nav を使用して
UINavigationControllerDelegate
各子のtraitCollection
オン をオーバーライドするnavigationController:didShowViewController:animated:
– これは違いがないように見えました traitCollection
プッシュする前に、最初の nav 子で 2 番目の子をオーバーライドする
そのようです:
興味深いことに、これによりポップ アニメーションのバグが修正されますが、プライマリ コントローラー ( self
) はまだレギュラーのままhorizontalSizeClass
です ... さらに、これは悪い習慣のようです。私のView Controllerは、プレゼンテーションについて何も知る必要はありません! これは によって処理される必要があり、プレゼンテーション コントローラーにプロパティUIPresentationController
があるという事実によってサポートされているようです。overrideTraitCollection
ios - iOS - 選択的に呼び出される特性コレクション イベント
一連のボタンとコンテンツ ビューを備えたメイン ビュー コントローラーがあります。ボタンが押されると、すべてのサブビューがコンテンツ ビューから削除され、新しいサブビューが読み込まれます。基本的には、いくつかの追加機能を備えたカスタム タブ バー コントローラーです。
willTransitionToTraitCollection:withTransitionCoordinator:
トップレベルのView Controllerから、 期待どおりに見えtraitCollectionDidChange:
ます。これらのイベントが子に渡され、ビューが適切に表示されるように、これらのメソッドの両方で super を呼び出しています。
traitCollectionDidChange:
子View Controller(ネストされたビュー用)にのみ作成しています。私はそのイベントに簡単にフックできるので、これは世界の終わりではありませんが、イベントの 1 つだけが伝播していることは非常に奇妙です。
これは予想される動作ですか、それとも何か不足していますか?