skeg0
skeg0

Reputation: 187

UITableViewCell in ios7 now has gaps on left and right

I have a UITableView where, in ios6, my custom cell stretched completely to the left and right sides of the screen. So my square image on the left of the cell was hard up against the phone screen.

However, now in ios7, there is a small gap appearing on the left hand side so the image is now away from the side and slightly overlaps my text within the cell.

This also seems to be happening in other apps I have that I am now viewing in ios7 - all have a gap on the left and perhaps the right as well.

My Custom cell is set to a size of 320 according to Interface Builder - ios 7 hasnt changed this has it?

Upvotes: 10

Views: 19842

Answers (6)

harsh_v
harsh_v

Reputation: 3269

 override func viewDidLoad() {
    super.viewDidLoad()

    tableView.cellLayoutMarginsFollowReadableWidth = false
 }

Upvotes: 0

ShigaSuresh
ShigaSuresh

Reputation: 1768

This is working perfect for me:

-(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];
    }
}

Upvotes: 3

Eralp Karaduman
Eralp Karaduman

Reputation: 304

I'd prefer to make seperators myself. It feels simpler than struggling with tableview settings.Just set seperators to none, subclass your cells and do this in 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;
}

Upvotes: 3

Webmonger
Webmonger

Reputation: 593

For those using Xamarin/MonoTouch in c#

tableView.SeparatorInset = UIEdgeInsets.Zero;

Upvotes: 1

Tom
Tom

Reputation: 261

Adding the image to the cell.contentView fixes the problem:

[cell.contentView addSubview:imgView];

This way you don't even have to mind the separatorInset property.

Upvotes: 2

loydbrahn
loydbrahn

Reputation: 270

iOS7 added a separatorInset property.

Try adding this to your UITableViewController:

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

Upvotes: 23

Related Questions