wata.dev

tips: UITableViewで余分な境界線(separator)を非表示にする

これが一番簡単っぽい。

self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];

例えば UITableView を使っていて、

self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

のように境界線をONにしているとき、

画面の高さに対して、 UITableView の高さが足りてない(セルの要素数が足りてない)とき、空のセルが余白を埋めるかのように表示されてしまう。境界線なしのときは気にならないんだけど、境界線があると気になる。というか表示したくない。

検索してみるとStack Overflowがよく引っかかるんだけど、どうも解決策がまちまちで、例えば、 viewDidLoad 内で、

self.tableView.separatorColor = [UIColor clearColor];

として、 cellForRowAtIndexPath 内で、

if(indexPath.row == self.newCarArray.count-1){
} else {
    UIImageView *line = [[UIImageView alloc] initWithFrame:CGRectMake(0, 44, 320, 2)];
    line.backgroundColor = [UIColor redColor];
    [cell addSubview:line];
}

のようにする方法(http://stackoverflow.com/questions/8561774/hide-separator-line-on-one-uitableviewcell)とか。

でもこれだと、セルによって高さを動的に変えたりしてるときに、いちいち高さが変わったセルのheightを取って、境界線を addSubView し直したりするのも面倒。なので冒頭に書いた方法が一番簡単だと思う。

ブログの記事一覧