2011-01-21 7 views
2

私は100%の不透明度から0%の不透明度までフェードするように私のUIViewをしたいと思います。どのように私はこれを行うことができますか?UIViewに不透明グラデーションを適用するにはどうすればよいですか?

+0

背景は動的にレンダリングされていますか、または静的な背景イメージですか? – BoltClock

+0

その一部のテキスト:https://skitch.com/sidwynkoh/rkxar/main.psd-66.7-other-results-layer-mask-8 –

答えて

1

ビューがラベルと共に静的な背景イメージや色の上に置かれている場合、そのイメージやカラーのグラデーションPNGを作成してビューに配置することがすばやく難しいです。

それ以外の場合は、this CALayer gradient mask solutionを表示することができます。

3

Ray Wenderlichには、オブジェクトのグラデーション設定に関する素晴らしいチュートリアルがあります。私の提案は、あなたのニーズに合わせて次のコードを変更することです。

//Ray's code: 
void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, 
    CGColorRef endColor) { 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGFloat locations[] = { 0.0, 1.0 }; 

    NSArray *colors = [NSArray arrayWithObjects:(id)startColor, (id)endColor, nil]; 

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
     (CFArrayRef) colors, locations); 

    CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect)); 
    CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect)); 

    CGContextSaveGState(context); 
    CGContextAddRect(context, rect); 
    CGContextClip(context); 
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); 
    CGContextRestoreGState(context); 

    CGGradientRelease(gradient); 
    CGColorSpaceRelease(colorSpace); 
} 
関連する問題