2017-09-13 6 views
0

私はUILabelが同じ画面上のインターフェイス要素の背後で継続的に更新したいと考えています。 SwiftのXcodeツールのDebug View Hierarchyツールを使用すると、自分のラベルが他の要素の下で開始することがわかります。ラベルのテキストを更新すると、すぐ上にジャンプし、他のラベルやインターフェイス要素に上書きします。誰かが私にそれを指摘することができるかどうスウィフトでラベルを前後に送信する必要がありますか?

First Image 3D Debugger Image

最初の質問は...私は、Googleの素晴らしいことだろう... Interface Builderでレイヤーを前後を設定するためのツールを見つけることができません私の友人ではありませんでした。

ラベルを更新すると上に表示されるので、リフレッシュするたびにラベルを背面に送信できます... ViewController.swiftファイルで、ラベルの更新テキストは、私が試した:(私のラベルの出口フックは "consoleMe"

super.sendSubview(toBack:consoleMe) 

と呼ばれているいや...それは多分、後方だだから私は試してみました:?

consoleMe.sendSubview(toBack: super) 

...スーパーの代わりに「自己」と同様に。それは全くスーパーを好きではありません。それは自己がViewControllerであり、UIViewではないと不平を言う。

最後に、私はこれを絶対にやらなければならないのでしょうか?確かに、UILabelが他のものの下に留まるべきだと指定する方法はありますか?

UILabelを更新すると、自動的に前面に表示されます(または何か他のものがありますか?)他のラベルとアイテムを「不透明」にしようとしましたが、私のコンソールラベル。

ありがとうございます! -D

答えて

0

sendSubview(toBack:)UIViewの方法で、すべてのUIViewControllerオブジェクトが組み込まviewを含ま

UIViewControllerドキュメントから:。

ビュー管理

各ビューコントローラが管理しますこの階層構造のviewプロパティに格納されているビュー階層。 ss。

そこで代わりにview性質上sendSubview(toBack:)を呼び出す:

view.sendSubview(toBack: consoleMe) 
+0

こんにちは!お返事をありがとうございます。あなたが書いたことから、私はsendSubviewがUIViewで利用可能な関数呼び出しであることを理解しています。私の最初の推測はもっと近かったです(ViewControllerはUILabelではなく作業を行います)。ありがとうございました!私が理解できないことは、「すべてのUIViewControllerオブジェクトにはビューが組み込まれています」ということです。私は私のプログラムがViewControllerクラスのインスタンスを作成していることを知っています。ここではすべてをやっています... "view"という単語はプロパティを参照していますか?または別のクラスのインスタンスですか?また、他のオブジェクトに関連してコントロールやビューのレイヤーを固定する方法があるかどうかを知りたいと思います。 – Beagley

+0

@Beagleyはい 'view'は' UIViewController'のプロパティで、独自のビューを作成して 'view'にアクセスできるようにするときにサブクラス化します。私は私の答えに詳細を加えました。 – Paolo

+0

@Beagley他のビューに関連してビューを固定することについては、AutoLayoutを参照してください – Paolo

関連する問題