これは私の非常にお気に入りのトリックの 1 つです。
UIView *topview = [[[UIView alloc] initWithFrame:CGRectMake(0,-480,320,480)] autorelease];
topview.backgroundColor = [UIColor colorWithRed:226.0/255.0 green:231.0/255.0 blue:238.0/255.0 alpha:1];
[self.tableView addSubview:topview];
基本的に、画面サイズの大きなビューを作成し、コンテンツ領域の「上」に配置します。それを過ぎて上にスクロールすることはできません。
また、320x480 ピクセルの UIView のメモリへの影響について心配する必要はありません。CALayer には意味のあるコンテンツがないため、大量のメモリを消費することはありません。
注:「受け入れられた」回答が非常に単純な場合、この回答が関連するのはなぜですか? backgroundView
テーブルビューで設定しないのはなぜですか? 元の質問に示されている連絡先アプリの場合、テーブル ビューの「上」の領域は、テーブル ビューの「下」の領域 (白) とは異なる背景色 (水色) を持っているためです。この手法を使用すると、テーブル ビューの上下に 2 つの異なる色を表示できますが、これは単純な背景では実現できません。
編集 1/2018:コメントのトムが指摘したように、この回答はかなり古く、すべての iOS デバイスが同じ画面サイズであることを前提としています (クレイジーに思えますが、私がこれに回答したのは 2009 年でした)。ここで紹介する概念はまだ機能しますが、実際のUIScreen.main.bounds
画面サイズを把握するために使用するか、いくつかの凝った自動レイアウトを使用することができます (提案を歓迎します)。通常、ビューのサイズは、コントローラーがサイズを変更した後のサイズであるとは限らないため、別の回答のように使用することはお勧めしません。0x0 から始まる場合もあります。tableView.bounds
viewDidLoad