2016-03-26 8 views
0

Ich versuche, runde Ecken für eine UIView mit einer benutzerdefinierten TableViewCell zu erstellen. Das Problem besteht darin, dass beim Laden der Tabellenansicht nur die linke obere Ecke der Ansicht und nicht die untere gerundet wird. Jetzt, wenn ich die Tischansicht ein wenig scrolle, rundet es auch den unteren linken Teil der Ansicht ab.2 Runde Ecken einer UIView in UITableViewCell funktioniert nicht

Ich habe jede mögliche Methode versucht, aber ich kann meinen Kopf nicht herumkommen. Ich befestige auch die Screenshots und kopiere den Code. Dank

Table Cell Image

Der Code, den ich in der benutzerdefinierten Ansicht Zellklasse bin mit unter.

class FoodTVCell: UITableViewCell { 

var food: Food! 

@IBOutlet weak var foodPicture: UIImageView! 
@IBOutlet weak var foodName: UILabel! 
@IBOutlet weak var foodRating: UIImageView! 
@IBOutlet weak var deliveryTime: UILabel! 
@IBOutlet weak var minOrder: UILabel! 
@IBOutlet weak var category: UILabel! 
@IBOutlet weak var foodPriceLabelBG: UIView! 
@IBOutlet weak var foodPrice: UILabel! 


    override func awakeFromNib() { 
    super.awakeFromNib() 
    foodPicture.layer.cornerRadius = 75/2 
    foodPicture.clipsToBounds = true 

} 


override func layoutSubviews() { 
    super.layoutSubviews() 

    let maskLayer = CAShapeLayer() 
    let corners = UIRectCorner.TopLeft.union(UIRectCorner.BottomLeft) 
    maskLayer.path = UIBezierPath(roundedRect: foodPriceLabelBG.bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(20.0, 20.0)).CGPath 
    foodPriceLabelBG.layer.mask = maskLayer 
    foodPriceLabelBG.clipsToBounds = true 
} 

} 

Antwort

0

Ihre ‚Eckenverrundung‘ Code ist sehr gut funktioniert, ist das Problem, dass Ihre UIView s unteren Rand ‚s unteren Rand außerhalb Ihres Cell wird‘. Verringern Sie Ihre UIViewY Position und es wird von Ihrem Cell abgedeckt werden. Ich sehe die Trennlinie Ihrer Zelle auch unsichtbar, das heißt, Sie sollten Ihrer Zelle bei

größere Höhe geben. Sie sagten, es funktioniert sehr gut beim Scrollen, ich denke, es funktioniert beim Scrollen und nicht beim Scrollen nach oben. Das bedeutet, dass Ihre erste Zelle nach der Sekunde beim Scrollen nach unten neu gezeichnet wurde (wobei die zweite Zelle Ihre erste Zelle nicht bedeckt) und umgekehrt beim Scrollen nach oben (wo die zweite Zelle Ihre erste Zelle abdeckt)

+0

Danke Für deinen Kommentar. Eigentlich war es ein Höhenproblem der Zelle. Ich habe es einfach von 130 auf 132 erhöht und es hat wie ein Zauber funktioniert. Mein Schade, dass ich nicht darüber nachdenken konnte, bevor ich herkam :) Auch die UIView war nicht im unteren Bereich des Storyboards. Für die "Trennlinie" der Zelle ist es tatsächlich sichtbar, aber ich habe einen Screenshot gemacht, so dass es nicht sichtbar ist. Was ich mit dem Scrollen gemeint habe, ist, dass, wenn ich es sogar 1px bewegte, die Zelle neu gezeichnet wurde und die untere Ecke OK zeigte. Wie auch immer, danke für den Hinweis auf das Problem. – Dropocol

Verwandte Themen