3

iPhoneにCNNアプリがあります。

開くと「トップ ストーリー」が表示され、テーブルの一番上に常に写真が表示されます。

指を下にスライドさせると、画像が拡大/ズームされます。

より多くの行を表示するために指を上にスライドすると、表の行と同じ速度で画像が上に移動するのではなく、表の行が画像が画面から消えるよりも速く移動します。

このエフェクトのやり方を知っていますか?

4

3 に答える 3

1

UIScrollView contentInsetにUIImageViewが必要で、トップ インセットをゼロ以上に設定します。

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

UIImage *topImage = [UIImage imageNamed:@"photo"];
topImage.frame = CGRectMake(0, -topImage.frame.size.height, topImage.frame.size.width, topImage.frame.size.height);
[scroll addSubview:topImage];

self.contentInset = UIEdgeInsetsMake(topImage.frame.size.height, 0, 0, 0);

その後、UIScrollViewcontentOffsetを次のように設定します

scroll.contentOffset = CGPointMake(0, topImage.frame.size.height);

したがって、内部に画像を含むUIScrollViewがあります。UIScrollView にデリゲートを追加して、 を待つだけです- (void)scrollViewDidScroll:(UIScrollView *)scrollView。このメソッドが呼び出された直後に、画像のサイズを変更し、contentInset を変更します。

このアドバイスは、同様の方法でUITableViewに適用するか、 UIScrollViewでカテゴリを作成することもできます。

また、このプロジェクトhttps://github.com/samvermette/SVPullToRefreshのコードを読むことをお勧めします。また、UITableViewとその上部にビューを追加することについてもです

于 2012-11-14T10:43:41.567 に答える
0

私の推測では、テーブルビューの一番上のセル (またはセル) は透明であり、テーブルビューのスクロール方法に基づいてサイズ変更/移動されるテーブルビューの背後に UIImageView があります。

テーブル ビューは UIScrollView を継承するため、そのデリゲート (UITableViewDelegate) は、ユーザーがスクロール ビューをスクロールしたときに通知される UIScrollViewDelegate プロトコルを継承します。- (void)scrollViewDidScroll:(UIScrollView *)scrollViewこれらの通知を受け取るメソッドを実装contentOffsetし、スクロール ビューでプロパティを確認します。

インターフェイス ビルダーで必要な UI を構築するには、独自のテーブル ビュー コントローラーを実装する必要がある場合があります。

于 2012-11-13T22:11:17.263 に答える
0

自分で実装する必要がある完全なカスタム効果のようです。正しい方向に向けるために、最初にインスタンスから送信されたメッセージcontentOffsetの変化を監視します。scrollViewDidScroll:myTableViewcontentOffset.y < 0

[myImageView setValue:[NSNumber numberWithFloat:scaleIncrementAmountFloat] forKeyPath:@"transform.scale"];
于 2012-11-13T22:03:17.990 に答える