2017-02-25 75 views
0

我有一個tableview,我想在其行中顯示uiscroll視圖。我已經設定的tableview的高度如下:在UITableViewCell中爲UIScrollview設置內容

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{ 
    let deviceFrame = UIScreen.main.bounds.size 
    print((1.21*deviceFrame.width)) 
    return (1.21*deviceFrame.width) 
} 

現在我有一個自定義的表視圖細胞,即實現代碼如下細胞內我試圖增加對UIScrollView的頁面如下:

func loadContent(){ 
    var xaxis = 0 
    var numOfPages = 0 
    let screenSize = UIScreen.main.bounds.size 
    for index in 1...3 { 
     let pagevw = CustomPageView(frame: CGRect(x: xaxis, y: 0, width: Int(scrlvw.frame.size.width), height: Int(scrlvw.frame.size.height-10))) 
     pagevw.translatesAutoresizingMaskIntoConstraints = true 
     scrlvw.addSubview(pagevw) 
     xaxis = xaxis + Int(screenSize.width) 
     numOfPages += 1 
    } 
    let content = CGSize(width: numOfPages * (Int(scrlvw.frame.height)), height: Int(scrlvw.frame.height-30)) 
    print("content") 
    print(content) 
    scrlvw.contentSize = CGSize(width: numOfPages * (Int(scrlvw.frame.height)), height: Int(scrlvw.frame.height-30)) 
    pagecontrol.numberOfPages = numOfPages 
} 

現在雖然單元格出現正確,但表格的內容大小未正確更新。可能自動佈局在這裏造成一些麻煩。儘管我希望自動佈局保持原樣,因爲我的頁面中有很多組件。 這裏有人可以幫助我。

感謝

+0

你在這裏發佈的任何內容都顯示了與「表格的內容大小」有關的任何內容......你正在返回'(1.21 * deviceFrame.width)'作爲表格中*每行的高度 - 你意味着你在表格中創建了12行,但你的表格不會上下滾動? – DonMag

+0

我的意思是表格行中UIScrollView的內容大小,表格很好,但由於自動佈局,scrollview沒有得到正確的內容大小。 – pankaj

回答

0

當你動態地添加自動佈局內容到一個UIScrollView,要適當限制添加到子視圖,而不是使用設置每個子視圖的X,Y,W,H的老風格,然後計算scrollview的ContentSize。

這樣做時,您不僅可以使用約束來定位「頁面」(嵌入的子視圖),還可以「推出」滾動視圖內容大小的兩側。

我把一個添加子視圖的樣本添加到垂直滾動UIScrollView中嵌入的水平滾動UIScrollView中。它在Swift 2.2中,但它自動更新到3.0,沒有問題。

https://github.com/DonMag/SWAutoLayoutScrollView

我有幾種不同的方式來分配的限制,所有這些都完成同樣的事情,發揮各地。 「工作」方法仍然在主視圖控制器類中。

應該能夠複製這些技術來解決您的滾動需求。