Ich habe eine tableView
Zelle mit Etikett.
Ich möchte das Etikett mit Eckenradius machen.
Ich kenne die Funktion wie folgt aufrufen:
Swift - Label Ecke haben unterschiedliche Radius in der Tabellenansicht Zelle
label.layer.cornerRadius = 6
Aufkleber mit Ecke wie folgt aus:
Radius.
Also habe ich die Funktion gefunden.
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let mask = CAShapeLayer()
mask.path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)).cgPath
layer.mask = mask
}
Aber ich nenne diese Funktion die Bezeichnung verschwinden.
was falsch mit meiner Tabellenansicht Zelle.
Etikett verschwinden:
Mein Code:
class ContentLabel:UILabel {
override init(frame: CGRect) {
super.init(frame:frame)
translatesAutoresizingMaskIntoConstraints = false
numberOfLines = 0
isUserInteractionEnabled = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func drawText(in rect: CGRect) {
let insets: UIEdgeInsets = UIEdgeInsets(top: defaultContentPadding, left: defaultPadding, bottom: defaultContentPadding, right: defaultPadding)
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}
class TableViewCell: UITableViewCell {
var labelView:UILabel = {()->UILabel in
let label:UILabel = ContentLabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byCharWrapping
//label.layer.cornerRadius = 6
label.roundCorners(corners: [.topLeft,.topRight,.bottomLeft], radius: 6)
//What's wrong here!!!!!!!
label.layer.masksToBounds = true
return label
}()
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
loadView()
}
func loadView() {
contentView.addSubview(labelView)
}
override func layoutSubviews() {
super.layoutSubviews()
loadConstraints()
}
func loadConstraints() {
let labelViewWidth:CGFloat = contentView.bounds.width*0.6
labelView.frame = CGRect(x: 0, y: 0, width: labelViewWidth, height: CGFloat.greatestFiniteMagnitude)
labelView.sizeToFit()
let views = DictionaryOfInstanceVariables(self, objects: "labelView","icon")
let metrics = ["padding":10]
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:[labelView]-padding-[icon]-padding-|", options: [], metrics: metrics, views: views))
}
}
Ich versuche auch, den Code in func hinzufügen layoutSubviews()
, ich erfolgreich die Ecke geändert, aber wenn ich die tableview
blättern , der Zellinhalt verschwand und es ist sehr lückig, zu blättern.