5

UITableView の上に UIView を追加しようとしています。意図は、ユーザーがコンテンツをプルダウンすると (通常はプルして更新する場合と同じように)、UITableView の背景が表示される代わりに、テーブルの上の UIView が成長して、下にスライドしている上部の UITableViewCell に固定されるようにすることです。 . ユーザーが反対方向にスクロールすると (コンテンツが上に行く)、UIView は最上位の UITableViewCell であるかのように消えます。

この実装は、パス (タイムラインをプルダウンし、上部のプロフィール写真が展開されます。例: 0:15 ) と、新しい Facebook アプリのチェックイン (近くの場所のリストの上にマップが成長しています) で確認できます。

これについて最善の方法がわからない。同様の効果を得るには、UIView を最初のセルにする必要があると思います。しかし、この質問は、スクロール中にセルの高さを変更しようとすることについて少し心配しています。理論的には、サイズ変更は、一番上の UITableViewCell である場合、押し上げるのではなく、プルダウンするときにのみ行う必要があります。

編集:現在のコード - rummad からの提案を使用して、contentOffset のテーブルビューにキーパス オブザーバーを追加し、それに基づいてセルの高さのサイズを変更していますが、あちこちにジャンプしています。

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (self.tableView == (UITableView*)object) {
        if ([keyPath isEqualToString:@"contentOffset"]) {
            CGPoint scrollLoc = self.tableView.contentOffset;
            if (scrollLoc.y < 0) {
                NSLog(@"offset:%@", NSStringFromCGPoint(scrollLoc));
                headerSize = 100 - scrollLoc.y;
                [self.tableView beginUpdates];
                [self.tableView endUpdates];
            }
        }
    }
}
4

2 に答える 2

12

実際にはいくつかのライブラリが存在するようで、最初のテーブル セルを使用するのは適切ではありません。「視差」は魔法のグーグル用語のようでした。

http://rowboatrevolution.com/2012/02/uitableview-parallax-background-a-la-path/ https://github.com/Rheeseyb/RBParallaxTableViewController

于 2012-09-25T17:11:58.960 に答える
4

viewDidScroll:デリゲート メソッドで を追跡contentOffsetしますUITableViewUIViewその後、それに応じて のフレームを設定できます。

于 2012-09-25T14:56:40.413 に答える