Xcode 7 iOS 9 UITableViewCell Separator Inset issue

后端 未结 4 1197
情深已故
情深已故 2020-12-12 15:29

This is not a question, rather a solution to the problem I faced.

In Xcode 7, when the application is run on iOS 9 on iPad devices, the UITableViewCell

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-12 16:02

    Up to iOS 9

    In viewDidLoad

    Objective-C

    - (void)viewDidLoad {
        [super viewDidLoad];
        //Required for iOS 9
        if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
            self.testTableView.cellLayoutMarginsFollowReadableWidth = NO;
        }
    }
    

    Swift

    override func viewDidLoad() {
        super.viewDidLoad()
        if #available(iOS 9.0, *) {
            tableViewDiet.cellLayoutMarginsFollowReadableWidth = false
        }
    }
    

    In TableViewDelegate methods add following code:

    Objective-C

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    
        // Remove seperator inset
        if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
            [cell setSeparatorInset:UIEdgeInsetsZero];
        }
    
        // Prevent the cell from inheriting the Table View's margin settings
        if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
            [cell setPreservesSuperviewLayoutMargins:NO];
        }
    
        // Explictly set your cell's layout margins
        if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
            [cell setLayoutMargins:UIEdgeInsetsZero];
        }
    }
    

    Swift

    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    
        // Remove seperator inset
        if cell.respondsToSelector(Selector("setSeparatorInset:")) {
            cell.separatorInset = UIEdgeInsetsZero
        }
    
        // Prevent the cell from inheriting the Table View's margin settings
        if cell.respondsToSelector(Selector("setPreservesSuperviewLayoutMargins:")) {
            cell.preservesSuperviewLayoutMargins = false
        }
    
        // Explictly set your cell's layout margins
        if cell.respondsToSelector(Selector("setLayoutMargins:")) {
            cell.layoutMargins = UIEdgeInsetsZero
        }
    }
    

提交回复
热议问题