1

原点の上に UIViews を追加しようとしています。

例えば

サブビュー A を原点 (x= 0 , y = 0) に追加したとします。今、このサブビューの上に別のサブビュー B を追加したいので、試しました

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, -500, 200, 500)];
view.backgroundColor = [UIColor redColor];
[scrollView addSubview:view];

[scrollView setContentOffset:CGPointMake(0, 500)];
[scrollView setContentSize:CGSizeMake(300, scrollView.frame.size.height+500)];

一番上にスクロールしているときに、このような多くのビューを追加したい。つまり、スクロールビューが一番上に達したときに、現在のビューの上に別のビューを追加すると、スクロールが不足することはありません。

しかし、上記のコードでは、追加されたビューの上に表示されるようになりました。

4

2 に答える 2

2

私がこれを正しく理解しているなら、あなたはこれを間違った方法で見ています。合計コンテンツ サイズが 1000 のスクロール ビューがあり、コンテンツ オフセットを 500 に設定した場合、スクロール ビューの表示されている上部より 500 高いビューを追加する場合は、そのビューを設定する必要があります。このビューをスクロール ビューの現在表示されている部分の 500 ポイント上に表示したいのですが、左から右、上から 0,0 で始まるスクロール ビューの座標空間に座標を作成する必要があります。下。代わりにこれを試してください:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 500)];

編集:

このビューを既存のサブビューの上に移動したいので、両方のオブジェクトのフレームを調整する必要があります。新しいビューは上記のように設定されていますがsetFrame:、既存のビューを呼び出して、その y 原点を、少なくともその上に追加したビューの高さを測定する値に設定する必要があります。

于 2013-08-19T15:42:08.870 に答える
1

コンテンツの合計サイズを事前に計算し ( をUITableView呼び出す場合と同様heightForRowAtIndexPath)、サブビューをスクロール ビューの境界内に配置する必要があります。したがって、この場合、ビュー A は (0, 500) にあり、ビュー B は (0, 0) にあります。スクロールが発生したときにビューを動的に追加および削除できますが、コンテンツのサイズを前もって設定すると、作業がはるかに簡単になります。

于 2013-08-20T13:51:47.573 に答える