2011-09-21 1 views
15

私はUIViewを持っており、その底部を0の不透明度にフェードアウトしたいと考えています。UIViewのグラデーションマスク

これは、UIViewとそのコンテンツ全体に影響を与えるためにUIView(CALayer)に行うことができますか?

+0

グラディエントマスクで苦労している他の人にとっては、 'UIStackView'に適用しても機能しません。 –

答えて

31

はい、あなたが行うことができ、あなたのビューのレイヤーマスクとしてCAGradientLayerを設定することにより:

#import <QuartzCore/QuartzCore.h> 

... 

CAGradientLayer *maskLayer = [CAGradientLayer layer]; 

maskLayer.frame = view.bounds; 
maskLayer.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor]; 
maskLayer.startPoint = CGPointMake(0.5, 0); 
maskLayer.endPoint = CGPointMake(0.5, 1.0); 

view.layer.mask = maskLayer; 

P.S.また、機能させるには、QuartzCore.frameworkをアプリにリンクする必要があります。

+0

これは年を取っていることは分かっていますが、cgcolorを取得してポインタに戻すのはどうですか? 'colors'プロパティは、それがUIColorsの配列であることを示します。 –

+0

abstract from docs - ** colors ** - 各グラデーションストップの色を定義するCGColorRefオブジェクトの配列。それらをNSArrayに格納するために、それらをidにキャストします。率直に言って、私はARCを使用するときにブリッジキャストが必要だと思っていましたが、今のコードはコンパイルされているので、 – Vladimir

+0

ありがとうございました! – Deeper