我试图将细胞的左半部分染成绿色,将细胞的右半部分染成红色。在评论cell.frame.width
之前,请检查我已完成的代码段HERE以及我得到的结果。我们可以注意到有一些空白跟踪。我的猜测是cell.frame
没有给我正确的框架。
非常感谢任何可以达到相同结果的帮助或其他方法!
更新:表格视图和约束Here
答案 0 :(得分:1)
更好地使用自动布局,它将使应用程序在两个方向上都能正常工作。
并且在你的实现中,每次为每个单元格调用cellForRowAtIndexPath方法时都会创建bgView,因此最好检查bgView是否为nil而不是仅创建bgView。 请参考以下代码。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellID", forIndexPath: indexPath)
cell.backgroundColor = UIColor.clearColor()
if cell.backgroundView == nil {
let leftView = UIView()
let rightView = UIView()
rightView.backgroundColor = UIColor.redColor()
leftView.backgroundColor = UIColor.yellowColor()
cell.backgroundView = UIView()
cell.backgroundView?.addSubview(leftView)
cell.backgroundView?.addSubview(rightView)
leftView.translatesAutoresizingMaskIntoConstraints = false;
rightView.translatesAutoresizingMaskIntoConstraints = false;
let viewDict = ["leftView":leftView, "rightView":rightView]
cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[leftView]-0-|", options: [], metrics: nil, views: viewDict))
cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[rightView]-0-|", options: [], metrics: nil, views: viewDict))
cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[leftView]-0-[rightView(==leftView)]-0-|", options: [], metrics: nil, views: viewDict))
}
cell.textLabel?.text = "dsfsdkjfh fkjhsdkjfhs kdfksdhfk sdf";
return cell
}
答案 1 :(得分:1)
这可能有很多原因。你可以试试几件事:
单元格可能为附件视图腾出空间,例如复选标记,箭头等。尝试将单元格的附件类型设置为.None:
cell.accessoryType = .None
不是为右侧添加视图,而是尝试设置单元格的背景颜色,然后将左侧设置为view.width / 2
cell.backgroundColor = UIColor.redColor
let leftViewFrame = cell.bounds
leftViewFrame.width = view.frame.width / 2.0
let leftView = UIView(frame: leftViewFrame)
另一个潜在问题可以在viewDidLoad中解决:
self.automaticallyAdjustsScrollViewInsets = false