Abgerundete Ecken und Clip-Unteransichten in UITableViewCell

Ich kann nirgendwo etwas finden (Suchmaschinen, Dokumente usw.), das zeigt, wie abgerundete Ecken (insbesondere in einer gruppierten Tabellenansicht) für ein Element erstellt werden, das auch die Unteransichten ausschneidet.

Ich habe Code, der ordnungsgemäß ein abgerundetes Rechteck aus einem Pfad mit 4 Bögen (den abgerundeten Ecken) erstellt, der in der drawRect: -Methode in meiner untergeordneten uitableviewcell getestet wurde. Das Problem ist, dass die Unteransichten, die zufällig Schaltflächen mit ihren internen Bildansichten sind, den CGContextClip () nicht befolgen, den die uitableviewcell befolgt.

Hier ist der Code:

- (void)drawRect:(CGRect)rect
{       
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGFloat radius = 12;
    CGFloat width = CGRectGetWidth(rect);
    CGFloat height = CGRectGetHeight(rect);

    // Make sure corner radius isn't larger than half the shorter side
    if (radius > width/2.0)
        radius = width/2.0;
    if (radius > height/2.0)
        radius = height/2.0;    

    CGFloat minx = CGRectGetMinX(rect) + 10;
    CGFloat midx = CGRectGetMidX(rect);
    CGFloat maxx = CGRectGetMaxX(rect) - 10;
    CGFloat miny = CGRectGetMinY(rect);
    CGFloat midy = CGRectGetMidY(rect);
    CGFloat maxy = CGRectGetMaxY(rect);

    [[UIColor greenColor] set];


    CGContextBeginPath(context);

    CGContextMoveToPoint(context, minx, midy);

    CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
    CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
    CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
    CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);

    CGContextClip(context);
    CGContextFillRect(context, rect);

    [super drawRect:rect];    
}

Da dieser spezielle Fall statisch ist (wird nur in einer bestimmten Tastenreihe angezeigt), kann ich die Bilder bearbeiten, die für die Tasten verwendet werden, um den gewünschten Effekt zu erzielen.

JEDOCHIch habe einen anderen Fall, der dynamisch ist. Insbesondere eine gruppierte Tabelle mit vielen datenbankgesteuerten Ergebnissen, die Fotos zeigt, die sich in der ersten oder letzten Zeile mit abgerundeten Ecken befinden und daher abgeschnitten werden müssen.

So,Ist es möglich, ein CGContextClip () zu erstellen, das auch die Unteransichten schneidet? Wenn das so ist, wie?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage