2012-02-28 70 views
1

我正在設計一個iPad應用程序,它將具有一個自定義網格。網格將顯示包含單個字符的不同顏色的簡單幾何形狀。這些將根據用戶操作進行頻繁更新。我應該如何在iPad上實現自定義網格?

網格在兩個方向上都會大於屏幕尺寸,因此需要滾動/平移。

我還需要將頂部行和第一列「凍結」 - 所以頂部行保留在頂部,但其中的內容與網格的其餘部分水平滾動,並且第一列保留在左側,但內容與網格的其餘部分一起捲動。

第一列的內容可能很寬,所以我需要允許用戶調整它的大小。

我正在努力設計這個最好的方法。我在想,當我手動管理所有繪圖和交互時,將它作爲單個自定義視圖可能是最簡單的。但我不禁感到,我錯過了一些更簡單的方法。也許甚至有一個合適的第三方組件,這將是一個更好的起點。

設計此應用程序組件的最佳方式是什麼?

回答

2

我會有3個UIScrollViews,您可以適當地設置框架,以便它們使第一列和第一行具有您希望的大小 - 主網格內容可以是右下方的UIScrollView。

控制器類可以是所有視圖的UIScrollViewDelegate。將第一列UIScrolView的內容大小設置爲與其幀的寬度相同的寬度,但高度正確的內容大小,第一行UIScrollView應該具有與其幀相同的高度,但是內容的正確寬度,左下方的UIScrollView將其內容大小設置爲網格內容的大小。

- (void) scrollViewDidScroll:(UIScrollView*)scrollView的方法滾動它們中的任何一個,以便檢查哪一個已滾動,滾動適當TEH另外兩個時被調用。

//Declared and positioned somewhere earlier, like in the .h 
UIScrollView* firstCol; 
UIScrollView* firstRow; 
UIScrollView* mainGrid; 

- (void) scrollViewDidScroll:(UIScrollView*)scrollView { 
    if (scrollView == firstCol) { 
     CGPoint offset = mainGrid.contentOffset; 
     offset.y = firstCol.contentOffset.y 
     [mainGrid setContentOffset:offset]; 
    } 
    else if (scrollView == firstRow) { 
     CGPoint offset = mainGrid.contentOffset; 
     offset.x = firstRow.contentOffset.x 
     [mainGrid setContentOffset:offset]; 
    } 
    else if (scrollView == mainGrid) { 
     CGPoint offset = firstRow.contentOffset; 
     offset.x = mainGrid.contentOffset.x; 
     [firstRow setContentOffset:offset]; 
     offset = firstCol.contentOffset; 
     offset.y = mainGrid.contentOffset.y; 
     [firstCol setContentOffset:offset]; 
    } 
} 
0

UICollectionView做了很好的工作吧。但是如果你需要一個數據網格,再看看this one。這是在阿爾法階段,但是我會說在一兩個月內它會相當強大。歡迎任何建議,當然它是免費的。

相關問題