2013-10-08 62 views
0

我最近開始在我的應用程序中使用自動佈局,並達到了一個點,我似乎沒有找到答案。如何匹配滾動視圖中的標籤寬度與屏幕寬度與ios中的自動佈局

的情況下是很簡單的:

我有一個視圖控制器與它內部的一個滾動視圖。 scrollview應占用橫向和縱向模式下的所有空間。在這個滾動視圖中,我希望有一個標籤,它需要足夠的空間來顯示其內容,但僅限於當前scrollview-width(它不應超過屏幕大小)的最大值。剩下的文字應該被裁剪掉。

所以基本上我不希望scrollview水平滾動。

如果可能,我更喜歡只使用接口構建器的解決方案。

+0

您是否已經觀看過WWDC 2012和2013中所有與自動佈局相關的會話? –

+0

我現在已經做了,我找到了一種方法來處理它,但代價是在標籤上設置了一個固定的寬度。這不是我想要的,但它完成了工作 – greg

回答

0

關於您的評論:出現這種情況是因爲滾動視圖的大小取決於其內容(請參閱部分Pure Auto Layout Approach)。所以,標籤的大小不能取決於滾動視圖的大小。

有一個解決方法這一點 - 你可以設置標籤和主視圖之間,例如限制:

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.label 
                 attribute:NSLayoutAttributeLeft 
                 relatedBy:NSLayoutRelationGreaterThanOrEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeLeft 
                multiplier:1.0 
                 constant:40]]; 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.label 
                 attribute:NSLayoutAttributeRight 
                 relatedBy:NSLayoutRelationLessThanOrEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeRight 
                multiplier:1.0 
                 constant:-40]]; 

採用這種方法就會有距離的至少40點左右之間(右)一側和滾動視圖的左側(右側)(因爲滾動視圖將填充主視圖)。

或者,您可以在標籤和主視圖的width之間設置一個約束。它會是這樣的:

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.label 
                 attribute:NSLayoutAttributeWidth 
                 relatedBy:NSLayoutRelationLessThanOrEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeWidth 
                multiplier:1.0 
                 constant:-40]]; 

所以現在標籤的寬度不會比主視圖的width - 40大。

相關問題