2016-01-23 1 views
1
class RoomNewTableViewCell: UITableViewCell { 

    var row:Int? 
    var room: Room?{ 
     didSet{ 
      updateUI() //this is when render is called 
     } 
    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.layoutMargins = UIEdgeInsetsZero 
     self.separatorInset = UIEdgeInsetsMake(0, -15, 0, 0) 
    } 



    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 

    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func updateUI(){ 
     println("Updating UI") 
     let test = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) 
     test.backgroundColor = UIColor.greenColor() 
     self.backgroundColor = UIColor.blueColor() 
     self.addSubview(test) 
    } 

} 

}Как сделать вкладку сепаратора UITableView переместиться с краев экрана?

Это, как я создаю мой Tableview:

//Draw Table 
    self.roomsTableView.delegate = self 
    self.roomsTableView.dataSource = self 
    self.roomsTableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine 
    self.roomsTableView.separatorColor = UIColor(hex: 0xededed) 
    let tableViewStartY = CGFloat(0) //used to be 20.0 
    let extraPaddingToAlignTable = CGFloat(50) 
    self.roomsTableView.frame = CGRectMake(0, tableViewStartY, screenWidth, CGRectGetMinY(self.tabBarController!.tabBar.frame) + extraPaddingToAlignTable) 
    self.roomsTableView.addSubview(self.refreshControl) 
    self.roomsTableView.tableFooterView = UIView(frame: CGRectZero) 


    self.roomsTableView.rowHeight = CGFloat(100) 
    self.roomsTableView.clipsToBounds = true 
    self.roomsTableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0) 
    self.roomsTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) 
    self.roomsTableView.registerClass(RoomNewTableViewCell.self, forCellReuseIdentifier: "newCell") 
    self.view.addSubview(self.roomsTableView) 

Я пытался играть вокруг separatorInset для как таблицы и ячейки, но не могу заставить его работать ,

enter image description here

+0

Возможная Дубликат [IOS, 8 UITableView Сепаратор врезке 0 не работает] (http://stackoverflow.com/questions/25770119/ios-8-uitableview-separator-inset-0-not-working) –

ответ

4

С запуском прошивкой 8.0, яблоко добавлено layoutMargins свойство для UITableViewCell и UITableView.

Таким образом, вы можете установить layoutMargin в ноль в willDisplayCell: метод делегата TableView. Этот код просто устанавливает tableview layoutMargin и ячейку layoutMargin как UIEdgeInsetsZero.

Это будет работать и для iOS 7.0.

Попробуйте это может вам помочь.

Swift

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 

     if(tableView.respondsToSelector("setSeparatorInset:")){ 

      tableView.separatorInset = UIEdgeInsetsZero 
     } 

     if(tableView.respondsToSelector("setLayoutMargins:")){ 

      tableView.layoutMargins = UIEdgeInsetsZero 
     } 

     if(cell.respondsToSelector("setLayoutMargins:")){ 

      cell.layoutMargins = UIEdgeInsetsZero 
     } 

    } 

Objective C

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

Для прошивки 9.0, вы должны установить cellLayoutMarginsFollowReadableWidth в NO.

Objective C

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //For iOS 9 and Above 

    if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) { 
     self.tableView.cellLayoutMarginsFollowReadableWidth = NO; 
    } 
} 

Swift

override func viewDidLoad() { 
     super.viewDidLoad() 

     //For iOS 9 and Above 
     if #available(iOS 9, *) { 
      tableView.cellLayoutMarginsFollowReadableWidth = false 
     } 
    } 

Вы также можете установить это значение из раскадровки.

Открытая раскадровка и переход к инспектору атрибутов для TableView Cell.

Изменить тип SeparatorCustom Insets и изменить значение Left на 0.

Пожалуйста, смотрите ниже изображение.

enter image description here

Смежные вопросы