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

iPhoneでTableViewをセットした時にiOS7あたりからデフォルトで左端にmarginがセットされるというお節介仕様になったらしい。
ネットでググってみたら、対処方法を書いてくれている人がたくさんいたが、cellの内容に画像をセットしたらさらにmarginが変な事になっていたので、現時点の自分での完璧版をメモしておきます。
デフォルト
まずは、標準状態を確認。
※cellの内容はrowの順番を入れているだけです。
確かにデフォルト状態は違和感がある。
このmarginを修復するのは、比較的カンタンで、下記のように要素に「UIEdgeInsetsZero」をセットするだけです。
※抜粋して記述しているので、各自の環境にMarginセット箇所をコピペして使ってください。(変数は適時変更必須です)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//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行を追加してみましょう。
1 |
cell.preservesSuperviewLayoutMargins = false; |
とりあえず僕の環境では、このおまじないでほぼスペースが出来ることがなくなりました。