我知道向 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 = 背景;
创建可拉伸的 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(); 返回 [UIColor colorWithPatternImage:image]; }
创建 UIView 的子视图,但不要覆盖 drawRect,而是使用 CAGradientLayer。类似于http://nscookbook.com/2013/04/recipe-20-using-cagradient-layer-in-a-custom-view/
那么添加渐变作为背景的最有效和可扩展的方法是什么?