2014-11-25 81 views
0

我正在試圖製作一個半透明的黑色矩形,其中包含一些文字,以向用戶傳達一些信息。它似乎可行,但是當手機的文字大小很大時,標籤的內容被切斷 - 視圖不會擴大其尺寸。如何使用自動佈局調整視圖以適應標籤子視圖?

爲了創建這個,我添加了一個黑色背景和圓角的UIView,使它有點透明,並在其中放置了一個UILabel。視圖上的約束應該允許它在手機旋轉時變大,標籤上的約束將其邊緣固定在視圖上。

這裏有視圖的約束:

Align Center X to: Superview 
Align Center Y to: Superview 
Trailing Space to: Superview >= 40 
Leading Space to: Superview >= 40 
Width >= 200 
Width <= 300 
Height >= 100 
Height <= 150 

和標籤的約束:

Trailing Space to: Superview Equals:Default 
Leading Space to: Superview Equals:Default 
Bottom Space to: Superview Equals:Default 
Top Space to: Superview Equals:Default 

當在iPhone 5運行,視圖的尺寸爲200×102由於某種原因和文本是截斷,儘管它的限制允許它達到300 x 150.我做錯了什麼?

+0

http://stackoverflow.com/questions/27228279/auto-layout-constraint-with-dynamic-variable – Astoria 2014-12-01 13:32:40

回答

0

只需將UILabel頂部/底部/頂部/尾部約束設置爲零,因爲它具有內在內容大小。這意味着標籤將希望變得那麼寬以包含其全部可見的字符串值。看看this article

創建約束編程

_constraint=[NSLayoutConstraint constraintWith...]; 
[self.view addConstraint:_constraint]; 
//... 
_constraint.constant=40; 

使用插座,如果所有的約束都在IB定義。只要把它連接到你的約束。

@property (nonatomic,weak) IBOutlet NSLayoutConstraint *constraint; 
+0

謝謝。將UILabel約束設置爲零,現在UIView在手機旋轉時擴展,但現在圍繞標籤文本沒有填充;文本被直接推到視圖的邊緣。將頂部/底部/前導/尾部約束設置爲「8」之類的內容會提供填充,但當旋轉電話時,該視圖不會調整大小。 如何在視圖中添加一些填充以使其看起來更自然? – smeep 2014-11-25 22:27:20

+0

@smeep如果您將約束連接到IBOutlets(或將其保留爲類成員),則可以根據需要更改'constant'屬性。 – Astoria 2014-11-25 22:43:54

+0

對不起,我不明白。你是說在IB中將其定義爲0,但是然後在代碼中更改該值?我嘗試過,但現在視圖不會在手機旋轉時調整大小。也許我的假設是錯誤的 - 是不是可以純粹用自動佈局來做我想做的事情? – smeep 2014-11-25 23:04:22