web-dev-qa-db-ja.com

IPhone Interface Builder:Z-Index、ボタンのZオーダー、画像、UI要素など?

Interface Builderで物事をドラッグしています...画像がボタンの前(インジケータのような)にあるのか、ボタンの後ろ(背景のような)にあるのかを指定したいと思います。他の環境で表示するのに慣れているため、z-indexプロパティは表示されません。 z-indexプロパティがない場合、私が達成しようとしていることを実行する最善の方法は何ですか?ありがとう!

61
foreyez

Ui要素(ボタン、画像、テキストなど)をクリックして(画面上部の)レイアウトメニューに移動し、「前面に移動」、「背面に送信」などを使用して、目的を達成しました。 。

Xcode 4.2では、メニューの上部にオプションがあります:Editor-> Arrange

85
foreyez

サブビューを使用しないZ順序があります。一つには、「前面に送る」と「背面に送る」のメニューオプションがあります。ただし、ビュー内の要素を要素のツリーとして見る場合、ドラッグするだけで(ビュー自体ではなく)そこで要素を並べ替えることができます。

サブビューはグループ化には適していますが、順序付けには役立ちません(「セット」全体が同じレベルにとどまることを除く)。

XCode開発では、UI要素、つまり「ビュー」は、そのビューのサブビューである場合、別のビューの前にあります。たとえば、ビューBが背景で、ビューCがコントロールである場合、コントロールを背景の上に(つまり、ユーザーの近くに)配置するには、ビューCをビューBのサブビューにします。InterfaceBuilderでは、これを実現します。コントロールを背景にドラッグします

基本的に、背景のビューがツリーのルートに近く、前景(ユーザーに近い)のビューがツリーの葉の近くにあるツリー構造を見ています。

AppleのiPhone開発者ドキュメントにある Windows and Views ドキュメントは、問題を解決するのに役立ちます。

注1:ボタンやテキストフィールドなどの個々のコントロールを重複させることはほとんどありません。これは、Appleのユーザーインターフェイスガイドラインに反します。もちろん、必要であればcanでもこれを行うことができますが、安全地帯から出ることに注意する必要があります。 「通常の」iPhoneアプリケーションを単に作成する場合、最善の策は、Appleのやり方に固執することです。

注2:何らかの理由で特定の方法で重複する必要がある場合は、 CALayer を使用できます=すべてを適切に順序付けるオブジェクト。 CALayerオブジェクトは、AppleのCore Animationテクノロジーの一部です。

13
e.James

XCode 4.6 Interface Builderで、メニュー([エディタ]-> [ドキュメントアウトラインを表示])によって「ドキュメントアウトライン」を表示するか、キャンバスの左下隅にある半透明のボタンをクリックします。 「オブジェクト」リストの下に、ビューのZ順序が表示され、ユーザーはそれらをドラッグして相互に順序を変更できます。画面の下部に近いほど、その要素はユーザーにより近くなります。

11
Eric Colton

古い質問であることは知っていますが、xcode 4.6では、リスト内の要素を左にドラッグするだけです。リスト内の要素が低いほど、ユーザーに近くなります。リストの一番下の要素は、画面外にない限り常に表示されます。これがいつ実装されたのかはわかりませんが、他の答えよりも簡単なようです。

3
Kevin

Swiftの場合:

最上部に表示したいビュー内

     superview?.bringSubviewToFront(self)
2
Mr. Tann

私のために働いたのはコードでそれをやっていたことです:

self.view.sendSubviewToBack(imageView);

理由はわかりませんが、他の回答のどれもそれを永久に修正しませんでした。上記の行をviewDidLoadメソッドに追加します。


1
user4401104