問題タブ [uiview-hierarchy]
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 に表示されています。ビデオは、UIContainerView に埋め込まれた AVPlayerController で再生されています。
私の当初の計画は、UIView の幅、高さ、および上部を UIContainerView のものと等しくなるように設定することでしたが、これにより、「制約を同時に満たすことができません」というエラーが大量に発生しているようです。
私はこれを正しい方法で行っていますか?誰かが似たようなことをしようとして成功しましたか?
ありがとう、ジョー
objective-c - カスタムUIButtonクラスからView Controllerを表示するには?
次のビュー階層があります: ナビゲーション コントローラー、その中に、セルにカスタム UIButtons を持つ UITableView を含む別のビュー コントローラーをプッシュしました。私は別のビュー コントローラー (MyCustomViewController2) を持っています。これは、これらすべてのものの上にアニメーションで表示したいと考えています。
しかし、私はこの階層に混乱して- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
おり、カスタム UIButton クラスのメソッドを上書きする方法がわかりません。私がこれまでにやってきたコードは次のとおりです。
しかし、それはとても悪いです!アニメーションがないので、削除するには削除する必要があります。次に何を試すことができますか?
ios - アプリがフォアグラウンドに入る間、条件をチェックする際にボタンを非表示にします
2つの特定のビューコントローラーのビューが現在のビューの子孫であることを確認して、ボタンを非表示にする必要があります。これは、アプリがフォアグラウンドになったときに行われます。コード:
そして問題は、フォアグラウンドに来るときに表示されるビューが hrViewController.view または reportViewController.view であるにもかかわらず、コントロールが if 条件内に到達し、ボタンが非表示になっていることです。なぜですか?
ios - ビューが MapView の後ろにスタックする
ビューがマップ ビューの上に表示されるようにあらゆることを試みましたが (以下のコードを参照)、それでも表示されません。どうすればいいのかわからない。これは 0.5 alpha の mapView です
z 位置を使用すると、ビューが表示されますが、タッチ操作は許可されません (カスタムのセグメント化されたコントロールです)。
ios - 階層内のどのビューが触れられたかを取得する方法は?
S1という名前のstackViewを含むMyUViewタイプのUIview Vがあります。S スタックには、T という名前の UITextField を含む NM という名前のスタックビューと、L という名前の UILabel を含む M という名前の別のスタックビューが含まれています。
ビューの階層は次のとおりです。
- Ⅴ
- S1
- NM
- T
- M
- L
- NM
- S1
長押しジェスチャを認識するために、ビュー V に lprecognizer という名前の LongPressGestureRecognizer を追加しました。ビューで longPress ジェスチャ (および可能な他のジェスチャも) を検出したいのですが、ジェスチャが長押しジェスチャの場合、uitextfield T がタッチされたビューである場合にのみ特定のアクションを実行したいと考えています。
MyUView に次のデリゲート メソッドを実装しました。
ジェスチャがタッチされたものとして認識されたビューは、ビュー V のサブビュー配列の最初で唯一のビューであるスタック S1 であるため、これは (テキストフィールドに触れても) 機能しません (前述の階層を思い出してください)。
私の質問は:
この関心のあるビューがビューの階層の奥深くにある場合でも、関心のある特定のビュー (たとえば、UITextField など) が特定のタッチの領域にあるかどうかを知る簡単な方法がある場合は??
ビューの階層を再帰的に検索するという考えは避けたいと思います。
ios - iOS View Controllerがそのビューよりも長く存続することは可能ですか/予想されますか?
私が取り組んでいるアプリでは、ネットワーク リクエストの完了部分でランダムにクラッシュすることがあります。
イベントのチェーンは次のとおりです。
- View Controller を子 VC として追加します。親は子の代理人として登録されます。
- 子はデリゲート メソッドを呼び出して、何らかの API を呼び出します。
- 親は、メイン キューで応答 JSON データを取得します。
- 親は、受信したデータに従って子のビューを完了として更新します。
ただし、最後の部分では、クラッシュがランダムに発生します。再現するのはかなり難しく、Crashlytics は、nil 変数 (子ビュー コントローラーのビュー階層のサブビュー) を参照するためにクラッシュが発生することを示しています。この時点で親は生きています。
子View Controllerの関数を呼び出すとクラッシュするのではなく、関数内のビューを参照するとクラッシュするため、子View Controllerが解放される前にビューが解放されるというのが唯一の推測です。
だから私の質問は、タイトルが言うように、View Controllerがそのビューよりも長生きすることは可能ですか、それとも予想されますか?
これは、UIViewController
文書で述べられていることです:
ビュー コントローラーは、そのビューとそれが作成するすべてのサブビューの唯一の所有者です。これらのビューを作成し、ビュー コントローラー自体が解放されたときなどの適切なタイミングでそれらの所有権を放棄する責任があります。
ビューコントローラーの参照カウントが0になった結果、ビューが解放されるといつも思っていました。
更新提示する代わりに、子ビュー コントローラーとして追加しています。何が起こるかについてのより詳細な説明を追加しました。