シーンの 1 つの下半分に次の構造を持つ iPad アプリ (XCode 4.6.3、iOS 6.2、ARC、およびストーリーボード) があります (すべてのグリッドは、SubViewData と同様に UIView です)。
目的は、スプレッドシートのようなものを用意することです。水平方向にスクロールできるようにする必要があり、左側のグリッドはロックされたままになり、垂直方向にスクロールすると上部のグリッドがロックされたままになります。
これは、スクロールなしで現在のように見えるものです (右と下にもさらにあります):
更新: これは、UIViews を定義するコードです。
私は SO と Google を調べましたが、この例は見つかりませんでした。このコードを正しく動作させるために何を変更する必要があるか、またはcontentOffsetに関する詳細情報を入手できる適切なドキュメントを教えてください。(私はすでに UIScrollView を読んでいますが、それは役に立ちません!)
解決済み- 現在は機能しています... Fogmeister の助けを借りて、これが機能するようになりました:
- グリッドの時間とスタッフ名を保持するために、上部の行と左側の行の UIView を別々に作成しました
- それらの新しいUIViewをUIScrollViewsに埋め込みました(エディター->スクロールビューに埋め込み)
- それを実現するためのコードに関して、フォグマイスターからの指示に従いました。
これは新しい構造です:
そして、これはそれを実現するためのコードです:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint mainOffset = [scrollView contentOffset];
NSLog(@"\n\nmainOffset.x: %f\nmainOffset.y: %f", mainOffset.x, mainOffset.y);
// set the horizontal offset of the main view onto the column headers
[self.topGridSV setContentOffset:CGPointMake(mainOffset.x, 0)];
if(mainOffset.x < 0) {
[self.topGridSV setContentOffset:CGPointMake(0, 0)];
[self.schedScrollView setContentOffset:CGPointMake(0, 0)];
}
// set the vertical offset onto the row headers
[self.leftGridSV setContentOffset:CGPointMake(0, mainOffset.y)];
if(mainOffset.y < 0) {
[self.leftGridSV setContentOffset:CGPointMake(0, 0)];
[self.schedScrollView setContentOffset:CGPointMake(0, 0)];
}