[英]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
事實證明,在我的故事板中刪除滾動視圖的任何子視圖可以讓它滾動得很好。 如果我通過情節提要向它添加任何子視圖,即使是一個空白的全新 UIButton,它也不會應用 contentSize/允許滾動。
使用 ViewDidLayoutSubview
- (void)viewDidLayoutSubviews
{
[_scrollView setContentSize:CGSizeMake(320, 500)];
}
UIViewController 的方法調用順序如下
viewDidLoad 不是放置依賴於 IB 對象幀大小的代碼的好地方。 如果您在 viewDidLoad 中記錄滾動視圖的 contentSize,您將看到它是 (0,0)。 將代碼(設置內容大小的位置)移動到 viewDidAppear,它將正常工作。
檢查這些
例如
scrollView.contentSize = CGSizeMake(320, 640);
我的故事板看起來像這樣的滾動視圖 [工作]
我有完全相同的代碼在同一行中viewDidAppear並沒有奏效
將它移動到viewDidLayoutSubviews並且它工作正常。
[scrollView setContentSize:CGSizeMake(320, 500)];
感謝trick14 的回答。
問題很可能與自動布局有關。 UIScrollView 在使用 AutoLayout 時需要特別注意。
快速修復 - 將滾動的子視圖之一綁定到其超級視圖(滾動視圖)的頂部和底部空間。
長話短說:關於 SO 的問題: UIScrollView 不滾動而不管大 contentSize , UIScrollView 不會滾動,即使在內容大小設置后, 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.