Современная техника добавления градиента в UIView

Я знаю несколько способов добавления фоновых градиентов в UIView. Мне было интересно, какой самый эффективный и масштабируемый способ сделать это и почему? Вот методы, которые я использовал:

Создайте подпредставление UIView и перезапишите drawRect, где я рисую градиент в текущем контексте.

а. При использовании вышеупомянутого градиента создайте его с границами обзора, который я хочу украсить и вставьте этот фоновый градиент в качестве первого подпредставления, т.е.– insertSubview:atIndex:

б. После того, как я получаю вид градиента фона сверху, я отрисовываю его в контексте изображения и использую как фоновое изображение, т.е.

UIGraphicsBeginImageContext(gradView.bounds.size);
[gradView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *gradientImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIColor *background = [UIColor colorWithPatternImage:gradientImg];
self.view.backgroundColor = background;

Создайте растягиваемый PNG и используйте его для украшения фона. Техника очень похожа на то, как вы украшаете UIButton.

-(UIColor *)backgroundColor:(CGRect)frame
{
    UIImage *bg = [UIImage imageNamed:@"background_23x36"];
    bg = [bg resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 11.0, 0.0, 11.0)];
    UIGraphicsBeginImageContextWithOptions(frame.size, YES, [[UIScreen mainScreen] scale]);
    [bg drawInRect:frame];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return [UIColor colorWithPatternImage:image];
}

Создайте подпредставление UIView, но вместо перезаписи drawRect используйте CAGradientLayer. Похожий наhttp://nscookbook.com/2013/04/recipe-20-using-cagradient-layer-in-a-custom-view/

Так какой же самый эффективный и масштабируемый способ добавить градиент в качестве фона?

Ответы на вопрос(2)

Ваш ответ на вопрос