0
以下のコードでは、色付きのボーダーを追加し、渡されたコーナーを丸めます。しかし、私はプログラム的UIView
のサイズを変更すると、古い境界線が残り、私は、この二重の境界線を取得:UITableViewCellのUIViewはダブルボーダーを持っています
誰もがそれを修正する方法のアイデアを持っていますか?私はcell.layoutSubviews()
とcell.layer.layoutSublayers()
を呼び出してみました。私はボーダーレイヤーを削除し、ボーダーを設定する前にレイヤーをnil
に設定しようとしました。何も動作していないようです。
ビューのサイズを変更しない場合は問題ありません。 cellForRowAt
から呼び出され
func roundCorners (view: UIView, corners: UIRectCorner, radius: CGFloat, color: String) {
let bounds = view.bounds
let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds
maskLayer.path = maskPath.cgPath
view.layer.mask = maskLayer
var borderColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0)
switch color {
case "Green":
borderColor = UIColor(red: 130/255.0, green: 208/255.0, blue: 151/255.0, alpha: 0.9)
case "Red":
borderColor = UIColor(red: 243/255.0, green: 44/255.0, blue: 31/255.0, alpha: 1.0)
view.alpha = 0.5
case "Purp":
borderColor = UIColor(red: 102/255.0, green: 135/255.0, blue: 241/255.0, alpha: 0.7)
case "DarkBlue":
borderColor = UIColor(red: 90/255.0, green: 125/255.0, blue: 160/255.0, alpha: 0.6)
default:
borderColor = UIColor(red: 150/255.0, green: 150/255.0, blue: 150/255.0, alpha: 0.7)
}
let frameLayer = CAShapeLayer()
frameLayer.frame = bounds
frameLayer.path = maskPath.cgPath
frameLayer.strokeColor = borderColor.cgColor
frameLayer.lineWidth = 3
frameLayer.fillColor = nil
view.layer.addSublayer(frameLayer)
}
:
roundCorners(view: cell.MoveCellTo_TodayList, corners: [.topLeft, .bottomLeft], radius: 8, color: "Green")