2017-05-08 192 views
0

我試圖在故事板中解決這些約束。我目前有一個容器視圖,它有一些完美的約束和定位。它根據屏幕大小等調整大小。它完美的作品。iOS故事板約束條件不能按預期運行

鏈接到該容器視圖的視圖控制器當前設置爲Freeform,寬度爲306,高度爲315.在該視圖控制器的內部,我有一個具有以下約束的滾動視圖。

enter image description here

所以應該佔據整個視圖控制器。在該滾動視圖的內部,我有很多元素,按鈕,文本字段,標籤等。例如,我有一個固定在視圖頂部的文本字段(Top Space to Superview 0)。我也有拖尾和領先的空間超級視圖設置爲0.

如果我將視圖控制器從Freeform更改爲Fixed我期望滾動視圖更改大小(它的確如此),我期望它將寬度設置爲該文本字段與滾動視圖和視圖的寬度相同(不)。它保持寬度爲306.即使是它被設置爲拖尾並將空間設置爲超級視圖設置爲0.

這在諸如iPhone 4S的設備中產生問題。我希望此視圖的元素在寬度方面縮小以適應該容器視圖。但是,它只是允許水平滾動。

我想允許垂直滾動,因爲它是一種形式,並且有很多表單元素等等。所以對於較小的設備,他們應該能夠向下滾動查看所有元素。但是我希望元素可以根據寬度縮小或調整以適合較小的設備。

有關如何實現此目的的任何想法?

+1

滾動視圖的contentSize被應用到其內容的限制設置。因此,如果您希望滾動視圖的*內容*根據視圖大小進行更改(而不是滾動視圖的大小和方向),則必須設置約束條件和/或重新定位*內容元素*以執行此操作。 – DonMag

+0

@DonMag我不確定我是否理解。在文本字段中,我有'尾隨和領先的空間到超視圖設置爲0'。你能提供更多關於如何解決這個問題的細節?我必須添加或更改哪些限制才能使其工作?因爲我非常肯定'超級視圖設置爲0的拖尾和前導空間應該可以工作,而不是這樣,我根本不理解。 –

+0

文本字段和其他視圖不是'UIScrollView'的直接子節點,不受它的大小控制。他們是內容視圖的子節點,它位於滾動視圖的內部和「下方」。它們的約束是相對於該內容視圖設置的,如果你想讓它們重新佈局,你將不得不改變contentView。您還必須更改滾動視圖的contentSize以匹配新內容視圖的邊界。 –

回答

1

假設你的佈局類似於此:

enter image description here

較小,淡藍色的視圖控制器是具有固定到零一路走去滾動型。

左上方的標籤被釘在主導:0和上:0

右下角的標籤在追蹤固定:0和底部:0

的這些約束所有的4相對於的SuperView - 意思是ScrollView。

您還需要對Bottom Right標籤的Y位置約束 - 在這種情況下,我從頂部左標籤獲得了435「垂直間距」。

在這一點上,一切都按照您現在看到它的方式工作。我已經在Storyboard中設置了7+ ...如果我在7+上運行它,它完全符合「開放」。但是......如果我以5秒的速度運行它,右下角的標籤位於右側,我們會進行水平滾動。

若要解決該問題,您需要將另一個追蹤約束添加到Bottom Right標籤,但使其相對於保持ScrollView的View。

所以,用右下角的標籤選擇,你應該看到這一點:

enter image description here

+0

我應該加...這似乎是一個尷尬的結構。如果你想在「容器視圖」區域滾動內容,我認爲如果你只是有一個滾動視圖,而不是一個容器視圖,管理會更容易。 – DonMag

+0

完美!看起來像添加尾部空間來查看工作!感謝您的幫助。我做這個容器視圖的原因是因爲我有滾動視圖下方和上方的元素。這是目前圍繞它的最簡單的方法。我通常不會問這個問題,但最近我在佈局和故事板方面遇到了很多問題。仍然有些困惑。如果你想看看我另一個非常相似的問題,但是從另一個角度來看,最值得讚賞的是哈哈。 http://stackoverflow.com/questions/43835290/ios-scroll-view-allows-scrolling-past-content –