簡體   English   中英

故事板 UIScrollView contentSize?

[英]Storyboard UIScrollView contentSize?

我覺得我已經觸及了阻止這種情況的每一個可能的原因,但是我的故事板中有一個 UIScrollView 與一個插座相連,並且在 viewDidLoad 中我設置了 contentSize 以便我可以滾動(是的比我的框架尺寸大)!

但是,無論我更改什么,我都無法滾動! 我的滾動視圖中有幾個文本字段並啟用了彈跳,所以我可以看到,在測試它的上下移動時,我的子視圖在其中,但是無論我將 contentSize 設置為什么,我都無法滾動。

有什么我可能遺漏/應該檢查的嗎? 這是在故事板中使用 UIScrollView 的已知問題嗎?

更奇怪的是,我可以這樣做: [scrollView setBackgroundColor:[UIColor blueColor]]; 我有一個藍色的滾動視圖! 但是設置內容大小失敗。

編輯

我唯一的代碼(否則滾動視圖只是放入故事板視圖控制器中):

-(void)viewDidAppear:(BOOL)animated
{
    [scrollView setContentSize:CGSizeMake(320, 640)];
}

記錄的幀,按預期出現:

width: 320.00
height: 504.00

編輯 2

事實證明,在我的故事板中刪除滾動視圖的任何子視圖可以讓它滾動得很好。 如果我通過情節提要向它添加任何子視圖,即使是一個空白的全新 UIButton,它也不會應用 contentSize/允許滾動。

使用 ViewDidLayoutSubview

- (void)viewDidLayoutSubviews
{
    [_scrollView setContentSize:CGSizeMake(320, 500)];
}

UIViewController 的方法調用順序如下

  • 從筆尖醒來
  • 查看已加載
  • 視圖將出現
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • 視圖DidAppear

viewDidLoad 不是放置依賴於 IB 對象幀大小的代碼的好地方。 如果您在 viewDidLoad 中記錄滾動視圖的 contentSize,您將看到它是 (0,0)。 將代碼(設置內容大小的位置)移動到 viewDidAppear,它將正常工作。

檢查這些

  • 啟用用戶交互
  • 插座已連接
  • 包含的內容大小大於界限
  • 滾動啟用

例如

scrollView.contentSize = CGSizeMake(320, 640);

我的故事板看起來像這樣的滾動視圖 [工作]

在此處輸入圖片說明

我有完全相同的代碼在同一行中viewDidAppear沒有奏效

將它移動到viewDidLayoutSubviews並且它工作正常。

[scrollView setContentSize:CGSizeMake(320, 500)];

感謝trick14 的回答。

問題很可能與自動布局有關。 UIScrollView 在使用 AutoLayout 時需要特別注意。

快速修復 - 將滾動的子視圖之一綁定到其超級視圖(滾動視圖)的頂部和底部空間。

長話短說:關於 SO 的問題: UIScrollView 不滾動而不管大 contentSizeUIScrollView 不會滾動,即使在內容大小設置后UIScrollView 不使用自動布局約束

Apple 的文檔: https : //developer.apple.com/library/ios/technotes/tn2154/_index.html

Trip14 的回答對我有用。 我迅速將其編碼為:

override func viewDidLayoutSubviews() {

          (self.view as! UIScrollView).contentSize = CGSizeMake(600, 600)
        }

這似乎是一個類似的問題。 其他故事

故事板中的自動布局或約束可能存在問題。

故事板的最佳方式。:

按照圖片,最好的方式

暫無
暫無

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

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