2016-10-28 3 views
0

Я пытаюсь нарисовать пунктирную нижнюю границу UITableViewCells со следующим кодом:Попытки нарисовать пунктирную границу для UITableViewCell

func addDashedBottomBorder(to cell: UITableViewCell) { 
    let width = CGFloat(2.0) 
    let dashedBorderLayer: CAShapeLayer = CAShapeLayer() 
    let frameSize = cell.frame.size 
    let shapeRect = CGRect(x: 0, y: frameSize.height, width: frameSize.width*2, height: 1) 

    dashedBorderLayer.bounds = shapeRect 
    dashedBorderLayer.position = CGPoint(x: 0, y: frameSize.height) 
    dashedBorderLayer.strokeColor = UIColor.lightGray.cgColor 
    dashedBorderLayer.lineWidth = width 
    dashedBorderLayer.lineDashPattern = [9, 6] 
    dashedBorderLayer.path = UIBezierPath(roundedRect: shapeRect, cornerRadius: 5).cgPath 

    cell.layer.addSublayer(dashedBorderLayer) 
} 

Однако я получаю странную сплошную линию позади моей пунктирной линии, как может можно увидеть здесь: http://imgur.com/6kR9PgZ

Я уже установлен tableView.separatorColor = UIColor.clear в viewDidLoad

Любые идеи, почему я получаю эту сплошную линию за штриховой один?

+0

Вы проверили ответ –

ответ

2

Попробуйте

func addDashedBottomBorder(to cell: UITableViewCell) { 

    let color = UIColor.lightGray.cgColor 

    let shapeLayer:CAShapeLayer = CAShapeLayer() 
    let frameSize = cell.frame.size 
    let shapeRect = CGRect(x: 0, y: 0, width: frameSize.width, height: 0) 

    shapeLayer.bounds = shapeRect 
    shapeLayer.position = CGPoint(x: frameSize.width/2, y: frameSize.height) 
    shapeLayer.fillColor = UIColor.clear.cgColor 
    shapeLayer.strokeColor = color 
    shapeLayer.lineWidth = 2.0 
    shapeLayer.lineJoin = kCALineJoinRound 
    shapeLayer.lineDashPattern = [9,6] 
    shapeLayer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: shapeRect.height, width: shapeRect.width, height: 0), cornerRadius: 0).cgPath 

    cell.layer.addSublayer(shapeLayer) 
} 

Выход

enter image description here

1

Objective-C

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 

В Swift

tableView.separatorStyle = .None 
+0

, это не будет иметь никакого значения. Проблема заключается в логике слоев –

1

Линия вы показываете с donted линии по умолчанию TableViewCell Seperator, вы можете удалить его непосредственно из интерфейса строителя вместо того, чтобы писать любой код.

В построителе интерфейса выберите TableView и в Attributes Insepector Установите Separator на None.

enter image description here

2

если у вас есть написать

tableView.separatorS tyle = .None

Все еще, yo получают сплошную линию под пассивным рисунком, тогда 100% это не разделитель таблиц. Это что-то еще

Проверьте цвет фона стола, Когда вы очищаете цвет разделителя, небольшое расстояние остается между ячейкой. Если у вас цвет фона ячейки другой цвет от цвета фона стола, он отображается как разделитель .

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