iOS6対応 背景設定時の注意点

2012.10.09

iOS5(Xcode4.4) で作成したプロジェクトを iOS6(Xcode4.5) に移行したときに、背景の設定方法でいくつか修正作業がありました。
今回は、その中から以下の2点について、内容を書き残しておこうと思います。

  • UITableView の backgroundColor が使えなくなった。
  • Group Table View Background Color が使えなくなった。

UITableView の backgroundColor が使えなくなった

iOS6 では、UITableView の背景色を変更する方法として backgroundColor が使えなくなっているので、
代わりに backgroundView を使用します。

iOS5 では、以下のように backgroundColor を使用して背景色を変更していました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // ここで、テーブルの背景色をダークグレーに変更する。
    self.tableView.backgroundColor = [UIColor darkGrayColor];
}

これを iOS6 のデバイスで実行してみます。

警告やビルドエラーは発生せず動きましたが、背景色は変わりませんでした。

iOS6からは、背景色を変更するには backgroundView を使用します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 背景用のUIViewを生成する。
    UIView *bgView = [[UIView alloc] initWithFrame:self.tableView.frame];
    
    // 背景用のUIViewのbackgroundColorを設定する。
    bgView.backgroundColor = [UIColor darkGrayColor];
    
    // この画面のtableViewのbackgroundViewに、背景用のUIViewを設定する。
    self.tableView.backgroundView = bgView;
}

では、実行します。

背景が変更されました。

このように iOS6 では、UITableView の背景色を変更したいときは、 backgroundView を使用して、背景画面を設定します。

Group Table View Background Color が使えなくなった

Xcode4.5(iOS6)のストーリーボードで、UIViewの背景に「Group Table View Background Color」を使用すると、「Deprecated」(非推奨)の警告が発生します。

実際に画面を見てみます。

画面左を見ると分かるように、警告が発生しています。
「Deprecated: Group Table View Background Color is deprecated in iOS 6.0.」
さらに、画面表示も透明になっていて、少しおかしくなっているようです。

次に、コードで設定してみた場合はどうなるのか試してみました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
}

警告やビルドエラーは発生せず動きましたが、背景は真っ暗になってしまいました。
非推奨というか、もう使えないようです。

さらに、宣言しているところを見てみると、コメントに「deprecated」と書かれていました。

+ (UIColor *)groupTableViewBackgroundColor; // This method will be deprecated during the 6.0 seed program

このように、iOS6では、UIViewの背景に「Group Table View Background Color」は使用できないようです。