2016-01-22 77 views
0

我對iOS非常陌生,特別是使用Storyboard的複雜視圖。我已經開始開發下面的屏幕,試圖使用AutoLayout,所以我不需要擔心不同的iDevices屏幕尺寸。使用ScrollView的故事板約束不受尊重

我使用滾動型移動內容可見的空間,同時需要輸入一些信息,用鍵盤。事情是我重新創建了所有的約束,試圖讓這些字段遵守ScrollView的寬度。實際上,在運行時,所有字段的顯示都大於ScrollView的寬度(就像將屏幕寬度向右溢出一樣)。好奇的是按鈕尊重它的寬度。當我在iPhone 6s Plus上將方向更改爲橫向時,這些字段的寬度小於屏幕寬度,就好像我已經定義了特定的尺寸,並且按鈕會根據它的約束繼續遵守尺寸。有什麼想法嗎?

層次:

View Controller 
    View A 
    Scroll View 
     View B 
     Logo/App name/UITextFields/Switch/Button/Link 

基本上滾動被限制與View A.視圖B是由寬度與要查看並滾動邊距等於限制。

當前的Xcode版本:7.2(7C68)

+0

你可能有爲superview增加底部約束。這可能是物體的高度太高的原因 –

+0

嗨Bharath,謝謝你的回答。我編輯我的問題更清楚。當我說尺寸時,我指的是寬度。對不起... – mxmlc

回答

1

首先,我想感謝到和巴拉斯爲Dhaval他們的答案,他們是真正的幫助。

儘管答案幫助我在此視圖中擁有更好的行爲,但事實證明,我的問題與ScrollView無關,但是我使用了一個面具應用於這些字段以及應用這些蒙版的時刻。

我把這些面具讓自定義的圓角,所以我不得不邊角酷似後的圖像:

// Change webservice's text field style 
CAShapeLayer *shape = [[CAShapeLayer alloc] initWithLayer:self.url.layer.mask]; 
UIBezierPath *shadow = [UIBezierPath bezierPathWithRoundedRect:self.url.bounds byRoundingCorners:(UIRectCornerAllCorners) cornerRadii:CGSizeMake(5, 5)]; 
shape.path = shadow.CGPath; 
self.url.layer.mask = shape; 

但這個面具是在viewDidLoad中應用。更改爲viewDidLayoutSubviews解決了我的問題,並在縱向或橫向上獲得了正確的設計和行爲:圓角應該圓整並尊重約束條件。從計算器

enter image description here

兩個其他來源之前我沒有找到,可能是因與滾動型問題的人有用:

1

滾動視圖約束 - 頂部,底部,前置, 視圖B約束 - 頂部,底部,導致,拖尾和必須高寬約束集, 其他元素領先,中央垂直和必須的高寬比

請嘗試,這將有助於解決您的問題。

+0

嗨達瓦爾,感謝您的回答。你能否更清楚我到底需要約束誰? ScrollView應該受限於視圖A?而視圖B應該用ScrollView來約束? – mxmlc

+0

是的,正確。滾動視圖查看A,然後查看B到滾動視圖。 –

3

Scrollview constraints

請找加入滾動型即頂部,左側,右側和底部約束的約束。 以同樣的方式爲滾動視圖內的各個元素設置約束,例如textfieldbutton。對於這些元素,請設置左,右,頂部和高度限制。我已經添加了我的代碼來實現您的功能,請參閱下面的截圖。 Portrait mode Landscape mode