2017-05-01 12 views
0

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:

But I want to let three corners have 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:

enter image description here

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.

Antwort

0

versuchen Sie dies:

In Storyboard Einschränkung gilt (wrto Zelle Ansicht, wenn Sie es hinzufügen) zu beschriften:

  1. Top Layout
  2. führen,
  3. horizontalen Abstand zwischen Bild .
Verwandte Themen