2012-01-07 55 views
3

我在UIScrollView中有一個UITableView。我花了相當多的工作來完成它。iPhone UIScrollView如何正確縮放視圖?目前它的高度調整不正確

tableView是640x350,我使用滾動視圖從單元格的一端滾動到下一個。 滾動視圖是320x350。 滾動視圖的內容大小爲640X350

我運行到這個問題: 如果我設置滾動視圖的最低變焦倍數爲0.5,在tableview中的寬度現在填滿整個屏幕,但它的高度只有半個屏幕。 我希望tableview在縮小到0.5時顯示更多的行。

首先我想了解,如果這是正確的行爲,或我的tableView的內容大小和框架操縱的結果。 tableview在界面構建器中設置了所有的彈簧和支柱,並且應該填充可用的框架。這是我第一次嘗試縮放幾個月,我不記得它如何與縮放工作。

有人可以幫助我瞭解我需要調整的地點和內容嗎?

據我所知,我需要將代碼放入scrollViewDidZoom:,這將操縱tableView的框架和內容大小。

PS。 I「m距離viewForZooming返回實現代碼如下:UIScrollView的

+1

您是否知道'UITableView'已*是'UIScrollView'的子類?你是否嘗試過使用'UITableView'本身而不是另一個'UIScrollView'? – 2012-01-07 00:26:01

+0

是的,我知道這一點。製作表格視圖水平滾動是一大痛苦,我很高興有一個工作的設置。 – 2012-01-07 00:42:07

+0

我會建議你使用tableView的transform屬性。你將不需要使用scrollView。 – fibnochi 2012-02-09 10:50:17

回答

1

的方法是什麼,你正在努力實現是相當困難

解決方案1 ​​該解決方案使用你有確切的設置(UITableView的裏面的UIScrollView)

你說當你設置zoomScale爲0.5時,你希望你的表視圖垂直填充scrollView,在0.5時,你的表視圖必須是640x700爲了填充UIScrollView如你所願。 ,在scrollViewDidZoom:您必須調整表視圖的框架到640x700


- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    // No matter what the zoomScale is, the tableView will be zoomed accordingly 
    // Only zoom the height of the table 
    tableView.frame = CGRectMake(0, 0, 640, 350/zoomScale); 

    // Also, update the contentSize 
    scrollView.contentSize = CGSizeMake(640, 350/zoomScale); 
} 

如果你運行上面zoomScale = 0.5你會得到640x700幀大小不同的代碼。

這隻會改變表格的框架,不會改變單元格的高度。這意味着當你縮小時,你將在tableview中看到更多的單元格。

解決方案2只能使用UITableView的

的UITableView是的UIScrollView的子類。這意味着它可以縮放和滾動。

從屏幕上顯示所需大小的UITableView開始。然後,在加載內容後,修改contentSize並使其大於您的框架寬度。這應該啓用水平滾動。

但是,UITableViewCells將其框架自動設置爲tableview框架的寬度。你可以通過使用自定義的UITableViewCell來繞過這個,使用clipsToBounds=false。在它裏面,你將插入一個UIView,框架設置爲你想要的高度&並且沒有autoresizingMask。當tableview將調整UITableViewCell框架的大小時,這不會影響你的內部UIView。