Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove SeparatorInset on iOS 8 UITableView for Xcode 6 iPhone Simulator

I found a weird white space on UITableView for iPhone 6 Simulator (iOS 8) on Xcode 6 GM. I have tried to set the SeparatorInset from both storyboard and also the code, but the white space is till there.

The following code works on iOS 7 but not on iOS 8 (iPhone 6 simulator).

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

I attached screenshot below:

iPhone 6 Simulator weird white space on tableview

I am using AutoLayout by the way. I hope someone can show me a way to remove the weird white space on the TableView.

like image 328
Ricky Avatar asked Sep 10 '14 10:09

Ricky


1 Answers

Thanks Student for pointing me to the right direction with the comment "Try this self.myTableView.layoutMargins = UIEdgeInsetsZero;" This line of code will only work on iOS 8 because layoutMargins is only available from iOS 8. If I run the same code on iOS 7, it will crash.

@property(nonatomic) UIEdgeInsets layoutMargins Description   The default spacing to use when laying out content in the view. Availability  iOS (8.0 and later) Declared In   UIView.h Reference UIView Class Reference 

enter image description here

Below is the right answer to solve this weird white space by setting the tableview layoutMargins and cell layoutMargins as UIEdgeInsetsZero if it exists (for iOS 8). And it will not crash on iOS 7 as well.

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

See the screen shot below:-

enter image description here

like image 142
Ricky Avatar answered Sep 16 '22 16:09

Ricky