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;
とりあえず僕の環境では、このおまじないでほぼスペースが出来ることがなくなりました。
0 件のコメント:
コメントを投稿