2017-03-08 54 views
2

我有幾個標籤,它們絕不應該互相接觸。見下圖(忽略黃色字母):當其他UILabel生長時自動收縮UILabel

labels

這些都是4個標籤總數,2個球員的名字和分數。播放器的名稱將替換原始播放器標籤文本。所以「玩家1:」可以是任何寬度的文字。標籤位於UIStackView中的視圖中。每個2個標籤(所以球員的名字和得分)都有他自己的觀點。在此示例中,1個UIStackView中有2個視圖中有4個標籤。這是我想要的:

分數標籤永遠不會自動縮小,它們始終保持原來的高度,如果內容(分數)增長,它會自動增加寬度。因此,我將內容擁抱優先級設置爲比玩家名稱標籤更大的值。由於我不想讓分數標籤自動縮小,因此我將內容壓縮抵抗優先級設置爲比玩家名稱標籤更高的值。

我將玩家名稱標籤文本設置爲0.5的自動收縮值比例。然而,當提出一個大的用戶名,它出現在得分標籤這樣的(我做出了原來藍色的「0」,現在黃):

error

用戶名應自動收縮,並且絕不碰得分標籤。我怎樣才能做到這一點?

我希望你能幫忙!

編輯:我想在球員姓名和球員得分標籤之間添加尾隨空格。要做到這一點,我想添加一個尾隨空間,從球員名字,到球員得分標籤。然而,當添加這個限制時,它也將採用整個評分標籤。當它接觸到分數標籤時,我當然希望它停下來。圖1顯示了將尾部空格添加到比分標籤時球員姓名的大小。它佔據了比分標籤的膨脹。 :

playersname

而且約束:ss

我不希望使用固定的約束,因爲這將導致在iPad或iPhone上運行SE它的問題。謝謝。

+0

「UIStackView」可能不使用內容壓縮或擁抱屬性。它還管理自己的視圖堆棧(不需要關心自動佈局)。我認爲你最好直接將標籤添加到視圖中,並在沒有自動佈局的情況下處理它。 – keithbhunter

+0

是的,它是在自動佈局中,堆疊在UIStackview中。我不知道如何做這個特別的事情。自動佈局不會根據其他UILabels自動調整標籤大小 – Petravd1994

+0

我不認爲UIStackView不支持其中的標籤內容擁抱。我會在更改我的整個代碼之前等待其他答案 – Petravd1994

回答

2

要完成此操作,請將1個UIView拖放到故事板或xib.Drag 2 UILabels中,並將它們並排放置。向左/前導標籤添加頂部,底部,前導和尾部約束。尾隨是會在UILabels之間留出一些空間。向第二個標籤添加頂部,底部和尾部限制。現在將第一個(左/前導標籤)更改爲Autoshrink(最小字體比例0.5)。同時更改主題標籤 - 內容擁抱(水平252,垂直251)現在單擊右側/尾部標籤並更改內容擁抱251,垂直251),更重要的是在垂直和水平方向上將內容壓縮抵抗優先級設置爲1000.現在選擇包含這些標籤的視圖,命令C複製並粘貼到命令V以外的任何位置。現在選擇兩個視圖並進入頂層菜單在Xcode中選擇編輯器,然後選擇 - > Embed In - > UIStackView。將堆棧視圖設置爲Alignment .Center和Fill。在堆棧視圖中添加等高和等寬約束條件添加頂部(或底部或兩者) ,在棧視圖中引用尾部約束到它的超級視圖調整標籤上的前導和尾隨以添加一些填充在兩個視圖之間添加填充以在棧視圖內部添加標籤並在它們之間添加視圖並設置寬度約束(固定或百分年齡超過你想要的)到期望的填充。

+0

謝謝!它現在幾乎可以工作。因爲我不能添加帶有固定數字的限制(如果您將玩家的名字鎖定爲得分,則其固定數字爲100),但是當我控制將我的玩家名稱標籤拖到得分標籤上並添加「拖尾」時,它會添加約束但在標籤之後。你知道如何在標籤之間設置一個空格嗎?我會更新它的圖片,如果你可以回答你做了一個了不起的工作:) – Petravd1994

+0

我只會在GitHub上發佈一個我所解釋的例子,你可以看到它是否有效。給我幾個 – agibson007

+0

看看這個。應該如上所述。如果這是你正在努力完成的事情,請將答案正確地標記出來。 https://github.com/agibson73/StackViewHorizo​​ntal – agibson007