問題タブ [viewwilltransitiontosize]
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 - iOS 8 でのネストされた UICollectionViews、AutoLayout、および回転
私は大規模なプロジェクトで AutoLayout を使い始めましたが、これにはかなり驚きました。ただし、回転とサイズのクラスに対応するようにプロジェクトを調整する必要があり、ビューを正しく動作させるのに大きな問題があります。
基本的な問題は、再び UICollectionViews を含むセルをUICollectionViews
使用していることです。デバイスが回転すると、ベース コレクション ビューはそのセルを正しく調整しますが、ネストされたコレクション ビューのすべてのセルは新しいサイズに自動的に調整されません。
調査の結果、次のようになります。
- が呼び出されたとき
viewWillTransitionToSize
、ベース コレクション ビューはまだ回転していません (予想どおり)。 - そのviewDidLayoutSubviewsが呼び出された後、ベースコレクションビューのサイズが回転しました-しかし、残念ながらそのセルはまだ-回転前の幅のままです
- セル内の
coordinator animateAlongsideTransition ... completion:{}
ブロックでもviewWillTransitionToSize
、新しい幅はまだありません。
上記は、新しい幅がまだわからないため、ネストされたコレクション ビューのセルにサイズを変更するように指示できる場所がないことを意味します。また、自動レイアウト システムはそれらを自動的に調整しません。
他の誰かが同じ問題を抱えているか、解決策を知っていますか?
objective-c - viewdidload、viewdidappear でフレーム サイズが正しくない
iOS8を使用。と で、ビューのフレーム サイズUIViewController's
が正しくありませviewDidLoad
んviewDidAppear
。から正しいフレームサイズを取得してviewDidLayoutSubviews
ビューの更新を実行できましたが(レイアウトを無効にする必要があります)、回転を処理するよりもviewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
無意味になり、2つの方法がそれを解決します。
レイアウトを無効にして無意味な計算やレイアウトなどを実行する必要があるかどうかわからないため、理想的willTransitionToSize
には と ではなく と呼ばれます。didLayoutSubviews
回転やフレーム サイズの変更に関連するあらゆる種類のマジック フラグの使用を避けたいと考えています。
これが発生する前に、View Controllerビューの「真の」サイズを取得する方法はありますか?
編集
コード例を次に示します。
ios - iOS8 - UINavigationController で UIViewController をプッシュしてデバイスを回転させた後、以前のビュー コントローラーでサイズが正しくない
UINavigationController
ルートUIViewController
(「ルート」)があります。
ルート ビュー コントローラーは別のUIViewController
「子」をプッシュします。「子」UIViewController
が画面上にある場合、デバイスを回転させ、それに応じて「ルート」View Controllerのサイズが変更されることを期待していますが、これは起こっていません。ルート ビュー コントローラーにブレークポイントを配置した後:
サイズが正しくなく、ルート ビュー コントローラーが変更に適切に対応していないことがわかります。
この動作を経験した人はいますか?
コードは次のとおりです。
これは、デバイスを回転させた後のサイズの NSLog の印刷画面です。これはシミュレーターのものですが、動作はデバイス上で同じです。
ios - ViewWillTransitonToSize 回転アニメーション
UIcollectionView でデフォルトの iOS デバイスの回転アニメーションを置き換えようとしています。transitionCoordinator で viewWillTransitionToSize と targetTransform() を使用して、デフォルトのビューの回転を防ぎ、変換を使用して各 visibleCell を正しい向きに回転させます。以下を除いて、正常に動作します。
- 可視四角形のすぐ外側の境界にあるセルは回転していません。
- 私のログは、collectionView.visibleCells() 配列が想定されているもの、つまり可視セルを提供していることを示していますが、デフォルトのアニメーションでビューを回転させると、visibleCells 配列が可視セルとセルを提供することがわかりましたすぐ近くにあります。
- これらの「近隣」セルにアクセスして回転できるようにしようとしましたが、すべての試行が失敗しました。
ViewWillTransitionTosize の私の実装は次のとおりです。
ここに簡単なgifがあります。問題を説明するには: http://www.blessinglopes.com/Info
どんな助けでも大歓迎です!ありがとうございました!
ios - iOS: あるビューのアニメーションを許可し、別のいくつかのビューのアニメーションを禁止する方法
AVCaptureSession ビューとその他の UI 要素を表示しています。デバイスの回転を処理し、この UI 要素の位置をアニメーションなしで手動で設定する必要があります。アニメーションを防ぐために設定UIView setAnimationsEnabled:NO
しましviewWillTransitionToSize
たが、すべてのアニメーションに影響し、結果としてアニメーションなしsetVideoOrientation
で動作する方法も発生AVCaptureVideoPreviewLayer
します。この問題を解決するにはどうすればよいですか?
ios - 自動サイズ変更マスク、viewWillTransitionToSize、および回転
マスク付きのparentViewController
コンテナ(柔軟な幅と高さ)が含まれています。コンテナーの幅はビューの ~80% です。デバイスを回転させると、「間違った」サイズで呼び出されます。ビューサイズを取得します。customViewController
autoresizing
parentViewController
viewWillTransitionToSize:withTransitionCoordinator:
parentsViewController
ここにの一部ですcustomViewController
少なくとも 2 つの異なるサイズが表示されているのに、一度しか呼び出されないのはなぜですか? マスクの自動サイズ変更でできるのであれば、ビューサイズを計算したくありません。
最初に自動サイズ変更マスクを適用し、適用後にサイズを取得するにはどうすればよいですか?
自動サイズ変更マスクviewWillTransitionToSize
を使用する際の正しい使用方法は何ですか?
ios - displayModeButtonItem が splitViewController の崩壊をトリガーするときに、viewWillTransitionToSize... が呼び出されないのはなぜですか?
セカンダリ (詳細) VC が UICollectionViewController である UISplitViewController があります。コレクション ビューのサイズとアスペクトの変更に基づいて、コレクションのセルのサイズを変更したいと考えています。UIContentContainer プロトコル メソッドをオーバーライドして、このサイズ変更をトリガーします。
これは呼び出され、デバイスが回転するときに希望どおりに機能します。ただし、このメソッドは、splitViewController?.displayModeButtonItem() によって提供されるボタンを押して、プライマリ (マスター) ビュー コントローラーを表示または折りたたむときに呼び出されません。その折りたたみは必然的にセカンダリ (詳細) ビューのサイズを変更するため、トリガーされたときに viewWillTransitionToSize... メソッドを呼び出す必要があります。
だから、2つの質問:
1) displayModeButtonItem が押されたときに実際に viewWillTransitionToSize... メソッドを呼び出す必要がありますか? もしそうなら、私はバグを見つけたようです。
2)私が見ているものが実際に正しい動作である場合、displayModeButtonItemが押されたとき、またはそのボタンの結果としてそのサイズが変更されたときに、セカンダリ(詳細)コントローラーが「知る」方法を誰かが提案できますか?押される?
ありがとう!
カール
ios - viewWillTransitionToSize causes non-rotating view controller to resize and reposition
A lot of people have discussed techniques for mimicking the native iOS camera app (where the UI elements pivot in-place as the device rotates). I actually asked a question about it before here. Most people have you lock the orientation of the UI, but then force a transformation on just the elements that you want to pivot. This works, but the elements don't pivot with the smooth animations you see in the native iOS app and it leads some issues. Specifically, part of my interface allows users to share without leaving this interface, but when the sharing view gets rotated, it comes out off-center. So I wanted to find a different way to do this.
I found a link to Apple's AVCam sample, which got me off to a start here. I'm new to this stuff, but I managed to convert it from Obj-C to Swift already. Below is the key element of what I'm currently using:
I then have separate view controllers for icons that do the same transformation in the opposite direction. The icons actually pivot in place properly now (with smooth animations and everything) and the camera preview stays properly oriented.
The problem is, the non-rotating view gets resized and everything gets misplaced when I rotate the device from portrait to landscape or vice-versa. How do I fix that?