2017-09-13 99 views
0

我想要一個UILabel不斷更新在同一個屏幕上的界面元素後面。通過使用Swift的Xcode工具中的Debug View Hierarchy工具,我可以看到我的標籤從其他元素下面開始。只要我更新標籤中的文字,它就會跳轉到頂部並覆蓋我的其他標籤和界面元素。在Swift中向前和向後發送標籤...我必須?

First Image 3D Debugger Image

第一個問題......我不能設置前後層在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文件:

視圖管理

每個視圖控制器管理一個視圖層次結構,其根視圖存儲在這個cla的view屬性中SS。

view財產因此呼籲sendSubview(toBack:)代替:

view.sendSubview(toBack: consoleMe) 
+0

嗨!感謝您的回覆。從你寫的,我明白,sendSubview是一個可用於UIView的函數調用。我的第一個猜測更接近(ViewController做的工作,而不是UILabel。)謝謝你!我不明白的是「所有的UIViewController對象都包含一個內置的視圖」。我知道我的程序正在創建一個ViewController類的實例,我們正在做所有事情......是指「屬性」這個單詞嗎?或者是另一個類的實例?我也很想知道是否有辦法將控件或視圖的圖層與其他對象相關聯。 – Beagley

+0

@Beagley是'view'是'UIViewController'的一個屬性,當你創建自己的時候你可以繼承它,所以你可以訪問'view'。我在我的答案中增加了更多細節。 – Paolo

+0

@Beagley關於與其他視圖關聯的視圖,請查看AutoLayout – Paolo