[Objective-C] UITableViewの左端のmarginが空いてしまう対処方法

2016年1月31日

Objective-C テクノロジー プログラミング

iPhoneでTableViewをセットした時にiOS7あたりからデフォルトで左端にmarginがセットされるというお節介仕様になったらしい。 ネットでググってみたら、対処方法を書いてくれている人がたくさんいたが、cellの内容に画像をセットしたらさらにmarginが変な事になっていたので、現時点の自分での完璧版をメモしておきます。

デフォルト

まずは、標準状態を確認。 ※cellの内容はrowの順番を入れているだけです。 確かにデフォルト状態は違和感がある。 このmarginを修復するのは、比較的カンタンで、下記のように要素に「UIEdgeInsetsZero」をセットするだけです。 ※抜粋して記述しているので、各自の環境にMarginセット箇所をコピペして使ってください。(変数は適時変更必須です) //talbeセット UITableView *tb = [[UITableView alloc] init]; tb.frame = CGRectMake(0, [[UIApplication sharedApplication] statusBarFrame].size.height, self.view.frame.size.width, self.view.frame.size.height); tb.scrollEnabled = YES; tb.delegate = self; tb.dataSource = self; tb.bounces = YES; //Marginセット tb.separatorInset = UIEdgeInsetsZero; tb.layoutMargins = UIEdgeInsetsZero; // セルの内容表示 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { **** //Marginセット cell.separatorInset = UIEdgeInsetsZero; cell.layoutMargins = UIEdgeInsetsZero; } 無事に左端がくっつきました。 「Marginセット」の下の2行 x 2箇所が重要なんですね。 ちなみにおまけでこれでもたまにうまく行かずに左端にスペースが出来てしまう場合はcell設定内にさらに下の1行を追加してみましょう。 cell.preservesSuperviewLayoutMargins = false; とりあえず僕の環境では、このおまじないでほぼスペースが出来ることがなくなりました。