Hi,
Ich habe einen UIView in einer UITableViewCell, der oben links und rechts jeweils eine abgerundete Ecke haben soll.
Ich nutze hierfür den UIBezierPath mit CAShapeLayer in der layoutSubviews-Methode der UITableViewCell Subclass.
Wenn ich die App starte, wird nur die obere linke Ecke abgerundet:
vorher.png
Erst wenn ich über die RefreshControl den Table View neu lade, wird auch die rechte Ecke korrekt abgerundet:
nachher.png
Ich nutze Autolayout mit Constraints, ich schätze mal die rechte Ecke wird nicht direkt abgerundet, weil erst die komplette Breite des Views berechnet werden muss. Aber ist hier die layoutSubviews-Methode nicht die Richtige?
Habs auch mit setNeedsLayout versucht, nach dem ich den Path hinzufüge, hilft leider nichts.
Hat jemand eine Idee?
Vielen Dank!
Ich habe einen UIView in einer UITableViewCell, der oben links und rechts jeweils eine abgerundete Ecke haben soll.
Ich nutze hierfür den UIBezierPath mit CAShapeLayer in der layoutSubviews-Methode der UITableViewCell Subclass.
C-Quellcode
- self.cellTopView.layer.masksToBounds = NO;
- UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.cellTopView.bounds
- byRoundingCorners:UIRectCornerTopLeft| UIRectCornerTopRight
- cornerRadii:CGSizeMake(3.0, 3.0)];
- CAShapeLayer *maskLayer = [CAShapeLayer layer];
- maskLayer.frame = self.cellTopView.bounds;
- maskLayer.path = maskPath.CGPath;
- self.cellTopView.layer.mask = maskLayer;
vorher.png
Erst wenn ich über die RefreshControl den Table View neu lade, wird auch die rechte Ecke korrekt abgerundet:
nachher.png
Ich nutze Autolayout mit Constraints, ich schätze mal die rechte Ecke wird nicht direkt abgerundet, weil erst die komplette Breite des Views berechnet werden muss. Aber ist hier die layoutSubviews-Methode nicht die Richtige?
Habs auch mit setNeedsLayout versucht, nach dem ich den Path hinzufüge, hilft leider nichts.
Hat jemand eine Idee?
Vielen Dank!