UIView に背景のグラデーションを追加するいくつかの方法を知っています。そのための最も効率的でスケーラブルな方法は何なのか、そしてその理由は何なのだろうかと考えていました。私が使用したテクニックは次のとおりです。
UIView のサブビューを作成し、現在のコンテキストでグラデーションを描画する drawRect を上書きします。
a. 上記のグラデーションを使用する場合、装飾したいビューの境界で作成し、この背景グラデーションを最初のサブビューとして挿入します。
– insertSubview:atIndex:
b. 上から背景のグラデーション ビューを取得したら、それをイメージ コンテキストでレンダリングし、背景イメージとして使用します。
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] スケール]); [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/と同様
では、背景としてグラデーションを追加する最も効率的でスケーラブルな方法は何ですか?