問題タブ [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.

0 投票する
1 に答える
2529 参照

ios8 - UIPresentationController は、別のビュー コントローラーがその上に表示されるとサイズが変わります

UIPresentationController を使用してモーダル ビュー コントローラーを提示しています。次の方法を使用して、presentedViewのフレームをcontainViewの境界よりも小さく設定しています:

この時点まで、すべてがうまく機能します。

ここで、画面全体を占める現在表示されているモーダル ビュー コントローラーの上に、別のビュー コントローラーをモーダル (デフォルトではカスタム) で表示します。したがって、画面全体をカバーするデフォルトのモーダル ビュー コントローラーの下にカスタム モーダル ビュー コントローラーがあります。

問題は、画面全体をカバーしているトップビューコントローラーを閉じると、カスタムビューコントローラーも画面全体をカバーして表示されることです。カスタム ビュー コントローラーのサイズを同じ (containerView より小さい) に維持したい。これを達成する方法はありますか。

どんな助けでもいただければ幸いです

0 投票する
2 に答える
356 参照

ios - UISplitViewController: コンパクトからレギュラーに回転するときに拡張を防止する方法

補完的な質問に対する多くの回答があります。これは、インターフェイスの変更PrimaryOverLayからRegularへの移行を防ぐ方法です。Compact

私の場合、詳細ビューが縦向きに表示された iPhone 6+ を使用しています。Compactデバイスを水平 (に)に回転させたときにRegular、プライマリ ビューを非表示にしたままにします。preferredDisplayMode多くの場所でtoを設定しようとしまし.PrimaryHiddenたが、明らかな影響はありません。グーグルは何も見つかりませんでした。

0 投票する
1 に答える
936 参照

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 で記述されています。

助けてくれてありがとう!

0 投票する
1 に答える
258 参照

ios8 - traitCollection と size クラスに関して、ランドスケープは左または右ですか?

アダプティブ UI を作成するために、Auto Layout、UITraitCollection、および size クラスを学習しました。しかし、私は1つのことが欠けていることを理解しています。

簡単に言えば、ネイティブのカメラ アプリと同じように、UI をホーム ボタンに固定したいということです。これを行うには、「H:[view]-0-|」のような制約文字列を指定します。しかし、アプリを横向きの左右の位置で起動すると、ビューのレイアウトが異なります。したがって、サイズ クラスに関する情報が十分でないことを意味します。サイズクラスに関して、左右の風景などというものはありません。

UIDevice.currentDevice().orientation などのプロパティがあります。しかし、それは非推奨です。

では、ビューをホーム ボタンに貼り付けることができるように、向きが横向きであるか右向きであるかを特性とサイズ クラスの観点からどのように判断すればよいでしょうか?

0 投票する
0 に答える
102 参照

ios - カスタム セグエの後、UITraitCollection に情報がありません

ログアウト後にホーム画面に戻ると、その に関する情報を返すことができませんtraitCollection。そのサイズクラスを取得したいのですが、それは不可能です。

ここに画像の説明を入力

セグエなしで画面を実行すると、すべての情報が表示されます。

しかし、カスタム セグエの後に画面が実行されると、次のように表示されます。

ビューに関する情報はありません。

カスタム セグエのコードは次のとおりです。

0 投票する
1 に答える
118 参照

ios - 予期しないナビゲーション ポップ アニメーション - 画面から飛び出す

UINavigationControllerのデフォルトのポップ アニメーションが予期しない動作をするという問題が発生しています。

この問題は、コントローラーのUITraitCollection.

私はユニバーサルアプリを持っていUIPresentationControllerます.iPadでは、ナビゲーションを部分モーダルで表示するカスタムがあり、その幅は画面幅の一部です。したがって、のプロパティでをオーバーライドしhorizontalSizeClassてコンパクトにするので、この「ハーフ モーダル」に表示されるすべてのコントローラーは iPhone レイアウトを想定します。UIPresentationControlleroverrideTraitCollection

そのサイズ クラスをオーバーライドすると、バグが発生するようです。突然、その「ハーフモーダル」内でコントローラーをポップすると、アニメーションが横向きでめちゃくちゃになります (左または右にジャンプします)。

これがどのように見えるかの例です: 予期せぬポップアニメーション

試み

まず、オーバーライドを取り除くとtraitCollection、バグはなくなります。ただし、これらのビューは通常の環境でも他の場所で再利用されるため、水平サイズ クラスをオーバーライドしたいのは明らかです。

horizontalSizeClassしたがって、次のように、モーダルの子の を他の方法でオーバーライドしようとしました。

  • モーダル Nav を使用してUINavigationControllerDelegate各子のtraitCollectionオン をオーバーライドするnavigationController:didShowViewController:animated:– これは違いがないように見えました
  • traitCollection プッシュする前に、最初の nav 子で 2 番目の子をオーバーライドする

そのようです:

興味深いことに、これによりポップ アニメーションのバグが修正されますが、プライマリ コントローラー ( self) はまだレギュラーのままhorizontalSizeClassです ... さらに、これは悪い習慣のようです。私のView Controllerは、プレゼンテーションについて何も知る必要はありません! これは によって処理される必要があり、プレゼンテーション コントローラーにプロパティUIPresentationControllerがあるという事実によってサポートされているようです。overrideTraitCollection

0 投票する
0 に答える
189 参照

ios - iOS - 選択的に呼び出される特性コレクション イベント

一連のボタンとコンテンツ ビューを備えたメイン ビュー コントローラーがあります。ボタンが押されると、すべてのサブビューがコンテンツ ビューから削除され、新しいサブビューが読み込まれます。基本的には、いくつかの追加機能を備えたカスタム タブ バー コントローラーです。

willTransitionToTraitCollection:withTransitionCoordinator:トップレベルのView Controllerから、 期待どおりに見えtraitCollectionDidChange:ます。これらのイベントが子に渡され、ビューが適切に表示されるように、これらのメソッドの両方で super を呼び出しています。

traitCollectionDidChange:子View Controller(ネストされたビュー用)にのみ作成しています。私はそのイベントに簡単にフックできるので、これは世界の終わりではありませんが、イベントの 1 つだけが伝播していることは非常に奇妙です。

これは予想される動作ですか、それとも何か不足していますか?