2013-05-19 10 views
5

の左/右両側に勾配を色あせ:オブジェクティブC - 私はそうのようなビューコントローラのメインビュー(グレーのUIViewであり、木材UICollectionViewある)内で水平スクロールUICollectionViewを有するUICollectionView

このUICollectionViewの一番左側にある&の左端に固定された退色勾配を追加して、スクロールがユーザーのスクロールに伴って消えるようにします。これをどうやってやりますか?それはCAGradientLayerのいくつかの使用を伴いますか?私はあなたが私に与えることができるすべての助けに感謝します!

答えて

1

はコレクションビューサブレイヤにCAGradientLayerの二つの層を追加してください:

#import <QuartzCore/QuartzCore.h> 

CAGradientLayer *leftShadow = [CAGradientLayer layer]; 
leftShadow.frame = CGRectMake(0, 0, 100, self.collectionView.frame.size.height); 
leftShadow.startPoint = CGPointMake(0, 0.5); 
leftShadow.endPoint = CGPointMake(1.0, 0.5); 
leftShadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 

[self.collectionView.layer addSublayer:leftShadow]; 

CAGradientLayer *rightShadow = [CAGradientLayer layer]; 
rightShadow.frame = CGRectMake(CGRectGetWidth(self.collectionView.frame)-100.0, 0, 100, self.collectionView.frame.size.height); 
rightShadow.startPoint = CGPointMake(1.0, 0.5); 
rightShadow.endPoint = CGPointMake(0, 0.5); 
rightShadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 

[self.collectionView.layer addSublayer:rightShadow]; 
8

私は実際にthis tutorial at cocoaneticsに1つのマスク層のおかげを使用してこれを理解するために管理。ここに私がやったことだ:

@interface ScalesViewController : UIViewController 
{ 
    CAGradientLayer *maskLayer; 
} 
@end 

次に.Mで、私は次のように配置された:

- (void)viewDidAppear:(BOOL)animated 
{ 

    [super viewWillAppear: animated]; 

    if (!maskLayer) 
    { 
     maskLayer = [CAGradientLayer layer]; 

     CGColorRef outerColor = [[UIColor colorWithWhite:0.0 alpha:1.0] CGColor]; 
     CGColorRef innerColor = [[UIColor colorWithWhite:0.0 alpha:0.0] CGColor]; 

     maskLayer.colors = [NSArray arrayWithObjects: 
          (__bridge id)outerColor, 
          (__bridge id)innerColor, 
          (__bridge id)innerColor, 
          (__bridge id)outerColor, nil]; 

     maskLayer.locations = [NSArray arrayWithObjects: 
           [NSNumber numberWithFloat:0.0], 
           [NSNumber numberWithFloat:0.125], 
           [NSNumber numberWithFloat:0.875], 
           [NSNumber numberWithFloat:1.0], nil]; 

     [maskLayer setStartPoint:CGPointMake(0, 0.5)]; 
     [maskLayer setEndPoint:CGPointMake(1, 0.5)]; 

     maskLayer.bounds = self.mainCollectionView.bounds; 
     maskLayer.anchorPoint = CGPointZero; 

     [self.mainCollectionView.layer insertSublayer: maskLayer atIndex: 0]; 
    } 
} 

をこれは私のコレクションビューの両側に素敵な「フェード黒に」効果を作成します。グラデーションブレンドを改善するために、より多くの色を場所の&カラープロパティに追加することができます。開始/終了点は、グラデーションの方向と位置を決定します。

関連する問題