簡體   English   中英

不遵守使用ScrollView的情節提要約束

[英]Storyboard constraints using ScrollView aren't respected

我是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

基本上,滾動條受視圖A約束。視圖B受與視圖A和滾動邊距相等的寬度約束。

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

滾動視圖約束

請找到添加到滾動視圖的約束,即頂部,左側,右側,底部約束。 以相同的方式為scrollview中的各個元素(即textfieldbutton設置約束。 對於這些元素,設置left,right,top和height約束。 我已添加代碼以實現您的功能,請參見下面的屏幕截圖。 人像模式 風景模式

滾動視圖約束-頂部,底部,引線,尾隨,視圖B約束-頂部,底部,引線,尾隨和必須高度-寬度約束集,其他元素-引線,居中垂直和必須高度-寬度比

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

首先,我要感謝巴拉特和達瓦爾的回答,他們的幫助很大。

盡管答案幫助我在該視圖中表現出更好的行為,但事實證明,我的問題與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解決了我的問題,並且在縱向或橫向模式下獲得了正確的設計和行為:圓角應在它們為圓形的地方並遵守約束。

在此處輸入圖片說明

我以前沒有發現過來自stackoverflow的另外兩個來源,這可能對使用ScrollView的人有用:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM