web-dev-qa-db-ja.com

ios7のUITableViewCellの左右にギャップがあります

UITableViewがあり、ios6では、カスタムセルが画面の左側と右側に完全に伸びています。そのため、セルの左側にある私の正方形の画像は、電話の画面に対して固くなりました。

ただし、現在ios7では、左側に小さなギャップが表示されているため、画像は側面から離れており、セル内のテキストとわずかに重なっています。

これは、私が現在ios7で表示している他のアプリでも発生しているようです。すべて、左側とおそらく右側にもギャップがあります。

私のカスタムセルはInterfaceBuilderによると320のサイズに設定されています-ios7はこれを変更していませんか?

10
skeg0

画像をcell.contentViewに追加すると、問題が修正されます。

[cell.contentView addSubview:imgView];

このようにして、separatorInsetプロパティを気にする必要さえありません。

2
Tom

iOS7はseparatorInsetプロパティを追加しました。

これをUITableViewControllerに追加してみてください。

if ([self.tableView respondsToSelector:@selector(separatorInset)]) {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
23
loydbrahn

これは私にとって完璧に機能しています:

-(void)viewDidLayoutSubviews
{
    if ([self.Video_TableVIEW respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.Video_TableVIEW setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.Video_TableVIEW respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.Video_TableVIEW setLayoutMargins:UIEdgeInsetsZero];
    }
}

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}
3
ShigaSuresh

自分でセパレーターを作りたいです。テーブルビューの設定で苦労するよりも簡単に感じます。セパレータをnoneに設定し、セルをサブクラス化して、これをinitで実行するだけです。

-(id)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if(self){

        UIView *seperator = [[UIView alloc] init];
        [seperator setBackgroundColor:[UIColor blackColor]];
        seperator.frame = CGRectMake(0, self.bounds.size.height-1, self.bounds.size.width, 1);
        [seperator setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth];
        [self.contentView addSubview:seperator];

    }
    return self;
}
3
Eralp Karaduman

C#でXamarin/MonoTouchを使用している場合

tableView.SeparatorInset = UIEdgeInsets.Zero;
1
Webmonger
 override func viewDidLoad() {
    super.viewDidLoad()

    tableView.cellLayoutMarginsFollowReadableWidth = false
 }
0
harsh_v