Современная техника добавления градиента в 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/
Так какой же самый эффективный и масштабируемый способ добавить градиент в качестве фона?