Swift:在表视图单元格的一侧添加边框



如何在表视图中的自定义单元格右侧添加灰色边框?我有一个表格的自定义单元格,想为所有单元格添加边框颜色,但在右侧,只表示可以向右滑动,这是我的自定义单元格类:

import UIKit
class AdminCustomCell: UITableViewCell {

@IBOutlet weak var MainView: UIView!
@IBOutlet weak var BackView: UIView!
@IBOutlet weak var Km: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
self.BackView.layer.borderWidth = 1
self.BackView.layer.cornerRadius = 20
self.BackView.layer.borderColor = UIColor.white.cgColor
self.BackView.layer.masksToBounds = true
self.MainView.layer.shadowOpacity = 0.18
self.MainView.layer.shadowOffset = CGSize(width: 0, height: 2)
self.MainView.layer.shadowRadius = 6
self.MainView.layer.shadowColor = UIColor.black.cgColor
self.MainView.layer.masksToBounds = false
}
//@IBOutlet weak var ParkingView: UIView!
@IBOutlet weak var Label: UILabel!
@IBOutlet weak var Alert: UILabel!
@IBOutlet weak var Logos: UIImageView!
@IBOutlet weak var ParkingView: UIView!
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}

override func layoutSubviews() {
super.layoutSubviews()
ParkingView.frame = ParkingView.frame.inset(by: UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))
}

}

您可以尝试使用CALayer或覆盖drawRect,并在需要的地方画一条线。

以下是使用CALayer 的示例

private func addRightBorder() {
let border = CALayer()

let borderWidth: CGFloat = 5

// Set the color your want
border.backgroundColor = UIColor.red.cgColor

// Create a rect only on the right of the view
border.frame = CGRect(x: bounds.maxX - borderWidth,
y: 0,
width: borderWidth,
height: bounds.maxY)

layer.addSublayer(border)
}

更新

基于Duncan的有效意见:

请注意,如果您的应用程序支持设备旋转(或iPad多任务处理(,您需要添加检测布局更改和移动边框的逻辑层因此,对于完整的实现,您可能需要保存border层作为实例var,并添加代码以调整其在布局更改。

以下是一些有望处理这种情况的更改:

// Persist the CALayer
var rightBorder: CALayer?
let borderWidth: CGFloat = 5
override func layoutSubviews() {
super.layoutSubviews()

// Add right border if we haven't already
if rightBorder == nil {
addRightBorder()
}

// Update the frames based on the current bounds
rightBorder?.frame = CGRect(x: bounds.maxX - borderWidth,
y: 0,
width: borderWidth,
height: bounds.maxY)
}
private func addRightBorder() {
rightBorder = CALayer()

rightBorder!.backgroundColor = UIColor.red.cgColor

layer.addSublayer(rightBorder!)
}

最新更新