[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; とりあえず僕の環境では、このおまじないでほぼスペースが出来ることがなくなりました。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。