テーブルビューにサブビューを追加しました。ユーザーがテーブルビューをスクロールすると、サブビューも一緒にスクロールします。これを防ぐにはどうすればよいですか?おそらくテーブルビューのサブビューにビューを追加しないという方針に沿っていることはわかっていますが、これを行う他の方法については知りません。ありがとう。
2 に答える
ビューをテーブルビューのサブビューにしたい場合は、scrollViewDidScrollメソッドでorigin.y値を変更することにより、ビューをフローティング(非スクロール)にすることができます。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
self.iv.frame = CGRectMake(self.ivOrigin.x, self.ivOrigin.y + self.tableView.bounds.origin.y, self.iv.frame.size.width, self.iv.frame.size.height);
}
この例では、「iv」は画像ビューのプロパティであり、「ivOrigin」は画像ビューの最初の原点(viewDidLoadで画像ビューとそのフレームを作成したときに定義された)のプロパティです。
UITableViewは、スクロールするもののビューとして構築および意図されています。
だから、あなたはそれと戦うことができます、それはあなたが発見しているように、コンポーネントに関するすべてが完全なリストデータのサブセットのスクロールと高速表示に焦点を合わせて構築されているので非常に難しいです...または、それと戦うことはできません静的アイテムを固定位置アイテムとしてテーブルの上に置きます。
メインビューにテーブルビューとアニメーション化アイテムを追加できない理由がある場合は、テーブルビューとアニメーション化ビューの両方を含むカスタムUIViewクラスをいつでも追加できます。カスタムビュークラスで、含まれているテーブルビューを.tableプロパティとして公開します。必要に応じて、「tableview」だけでなく「mycontainerObject.tableview」を使用するようにコンテナを調整できます。
はい、カスタムUIViewサブクラスを作成し、それにUITableViewとアニメーション化するUIViewを保持するためのいくつかのプロパティを与えるのは少し手間がかかります。しかし、長期的には、「ハッキング」しようとするよりもはるかに安全です。 UITableViewのメソッドとビュー階層は、「固定された」動作を提供しようとします。