2013-08-25 74 views
5

我有一個UIScrollView設置在viewDidLoad方法UIViewController(我將其稱爲ScrollViewController)。滾動視圖包含水平內容頁面(類似於本地天氣應用)。如何使用自動佈局在載入時滾動UIScrollView

顯示滾動視圖時,應該可以選擇啓動哪個頁面。我的模式是這樣的:

  • init a ScrollViewController。這裏沒有什麼發生。 A currentPage屬性默認爲0.
  • scrollViewController.currentPage設置爲所需的頁碼。
  • viewDidLoadScrollViewController,讀self.currentPage並使用scrollToRectsetContentOffset相應地滾動。

滾動實現看起來很好,因爲我在其他地方使用相同的代碼跳轉到某些頁面。但在第一次加載時,沒有任何事情發生(即,滾動視圖不滾動到所需的頁面)。

認爲我已經找到了原因 - 它似乎是滾動視圖的contentSize(這是由自動版式衍生記住)期間viewDidLoad是0,這似乎這防止滾動。在viewWillAppear期間它也是零。只有在viewDidAppear的滾動工作,這當然使奇怪的用戶體驗。

我該如何解決這個問題?以某種方式強制佈局viewDidLoad是明智的嗎?或者其他一些方法?

回答

8

viewDidLayoutSubviews是你在找什麼。這是所有子視圖幀都完全初始化的方法。因此,請嘗試在您的viewController中調用您的scrollView的設置方法:

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    [self setupView]; 
} 
0

您應該可以手動設置內容大小。你在哪裏插入滾動視圖內的頁面?我建議將它們插入viewDidLoadviewWillAppear,然後通過設置其contentOffset插入它們後滾動到所需的頁面。

相關問題