1

ここに画像の説明を入力してください

上の画像(Grouponアプリから)のような効果をビューに書き込む方法を探しています。以下のコードを使用して、シャドウを実行しようとしましたが、機能していません。私が探している効果は、ビューが上から下に向かって暗くなることです。誰かが私が間違ったことを教えてくれますか、そしてグルーポンが得る効果に近づく方法を教えてもらえますか?

   view.layer.shadowColor           =   [[UIColor blackColor] CGColor];
   view.layer.shadowRadius          =   8.0f;
   view.layer.shadowOpacity         =   0.75f;
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:4.0];
   view.layer.shadowPath            =   path.CGPath;
4

2 に答える 2

3

あなたが探している効果はグラデーションと呼ばれます。(iOSの用語では、影はオブジェクトの複製であり、ぼやけ、色付き、オフセットされています。)

CAGradientLayerを使用して、探している種類の効果を得ることができます。これらの1つをビューのサブレイヤーとして追加してみてください。

于 2013-03-03T23:50:43.950 に答える
0

上記のJesseRusakのソリューションを繰り返すと、UIViewのDrawrectで、クリアからブラックへのグラデーションを作成し、それをビューのサブレイヤーに追加します。

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    UIColor * darkerColor = [UIColorcolorWithWhite:0.0alpha:0.5];
    CGContextSetFillColorWithColor(context, darkerColor.CGColor);
    CGContextFillRect(context, self.bounds);
    NSArray *colors = [NSArrayarrayWithObjects:
                   ((id)[self.backgroundColorcolorWithAlphaComponent:0.0f].CGColor),
                   ((id) [UIColorcolorWithWhite:0.0alpha:1.0].CGColor), nil];
    gradientLayer = [[CAGradientLayeralloc] init];
    gradientLayer.startPoint = CGPointMake(0.5, 0);
    gradientLayer.endPoint = CGPointMake(0.5,1);
    gradientLayer.frame = self.frame;
    gradientLayer.colors = colors;
    [self.layerinsertSublayer:gradientLayeratIndex:0];
}
于 2013-05-20T04:02:32.873 に答える