2017-03-08 182 views
0

我在UIViewController中有一個UIScrollView,我期望它水平滾動。我通過循環以編程方式將按鈕添加到ScrollView。循環之後,我將myScrollView.contentSize.width設置爲buttonWidth * numberOfButtons。我也仔細檢查,以確保contentSize大於scrollview的框架(在這種情況下,滾動視圖的寬度爲375)。UIScrollView無法水平滾動

let numberOfButton = 7   
for index in 0..<numberOfButton { 
    let button = UIButton() 
    let frame = CGRect(x: 80 + (index * 80), y: 6, width: 60, height: 32) 
    button.setTitle("Button" + String(index), forState: .Normal) 
    button.frame = frame 
    button.titleLabel?.font = UIFont(name: "Museo Sans", size: 16) 
    button.setTitleColor(UIColor.blueColor(), forState: .Normal) 

    myScrollView.addSubview(button) 
} 
myScrollView.contentSize = CGSize(width: 100*numberOfButtons, height: 42) 

當我運行代碼時,它只出現在Button3(有7個按鈕),我不能將它滾動到最後。但是,當我設置myScrollView.bounces = true我可以拖動滾動視圖並查看其他按鈕,但它會彈回原始狀態。任何幫助將非常感激。

+0

IMO你應該使用一個collectionview呢?另外,在這之後myScrollView.contentSize的值是多少。你可以打印它看到 – Devster101

+0

myScrollView.frame(0.0,60.0,375.0,42.0)/ myScrollView.contentSize(700.0,42.0) –

+0

內容似乎沒問題,我唯一能想到的其他事情可能是啓用滾動。添加在myScrollView.isScrollEnabled = true – Devster101

回答

1

更改此

tagBar.contentSize = CGSize(width: 100*7, height: 42) 

myScrollView.contentSize = CGSize(width: 100*7, height: 42) 
+0

其實,這只是一個錯字錯誤。我剛編輯我的代碼。問題依舊 –

0

答案是Rajeshkumar [R給你,或者更好的使用限制。您可以在myScrollView的左邊和第一個按鈕(「前導空間」約束)之間設置一個約束,然後在每個按鈕和前一個按鈕之間設置一個前導空間約束,並且在完成循環時,將從上一個尾部空間開始按鈕到myScrollView

這樣你就不必自己計算contentSize。它也更具可擴展性(例如,如果您有不同大小的按鈕,則必須知道每個寬度,然後將所有寬度相加,然後使用scrollView ...對元素之間以及第一個和最後一個之間的邊距進行求和)。

1

我認爲你的問題是在第一個按鈕上設置X值。我剛剛試過這段代碼,它工作正常

let numberOfButtons = 7 
    for index in 0..<numberOfButtons { 
     let button = UIButton() 
     let frame = CGRect(x: 8 + (index * 96), y: 6, width: 80, height: 32) 
     button.setTitle("Button \(index)", for: .normal) 
     button.frame = frame 
     button.titleLabel?.font = UIFont(name: "Museo Sans", size: 16) 
     button.setTitleColor(UIColor.blue, for: .normal) 

     myScrollView.addSubview(button) 
    } 
    myScrollView.contentSize = CGSize(width: 100*numberOfButton, height: 42) 
+0

我已經解決了這個問題。發生這種情況是因爲我在XIB中有一個默認按鈕(只是第一個,其他人是動態創建的),並且它具有父視圖的約束,這就是爲什麼我無法從第一個按鈕中滾出。我已閱讀您的評論和解決方案。儘管他們沒有回答這個問題,但他們給我提供瞭解決這個問題的線索。非常感謝你。 –

+0

啊,我會盡量避免同時擁有靜態和動態視圖。它可能會變得非常混亂。 – Devster101