Самый эффективный способ закругления углов iPhone - PullRequest
1 голос
/ 18 ноября 2011

Теперь я знаю, что есть разные способы скругления углов, но какой путь наиболее эффективен?

маршрут слоя:

view.layer.cornerRadius = 15.0f;
view.layer.shouldRasterize = YES;

или какой-то маршрут coregraphics:

void roundTheRect(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight)
{
    float fw, fh;
    if (ovalWidth == 0 || ovalHeight == 0) {
        CGContextAddRect(context, rect);
        return;
    }
    CGContextSaveGState(context);
    CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect));
    CGContextScaleCTM (context, ovalWidth, ovalHeight);
    fw = CGRectGetWidth (rect) / ovalWidth;
    fh = CGRectGetHeight (rect) / ovalHeight;
    CGContextMoveToPoint(context, fw, fh/2);
    CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
    CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
    CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
    CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
    CGContextClosePath(context);
    CGContextRestoreGState(context);
}

1 Ответ

3 голосов
/ 18 ноября 2011

Всегда работайте на максимально возможном уровне, иногда работать на низком уровне просто не стоит. view.layer.cornerRadius = 15.0f; прекрасно работает для любого UIView

...