UIBezierPath rundet nur eine Ecke ab (Autolayout)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIBezierPath rundet nur eine Ecke ab (Autolayout)

    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.

    C-Quellcode

    1. self.cellTopView.layer.masksToBounds = NO;
    2. UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.cellTopView.bounds
    3. byRoundingCorners:UIRectCornerTopLeft| UIRectCornerTopRight
    4. cornerRadii:CGSizeMake(3.0, 3.0)];
    5. CAShapeLayer *maskLayer = [CAShapeLayer layer];
    6. maskLayer.frame = self.cellTopView.bounds;
    7. maskLayer.path = maskPath.CGPath;
    8. self.cellTopView.layer.mask = maskLayer;
    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!