2013-05-19 2 views
5

Ich habe eine horizontal-Scrolling UICollectionView innerhalb der Hauptansicht eines View-Controller wie so (Gray ist UIView Holz ist UICollectionView):Objective C - verblaßte Gradient auf der linken/rechten Seiten des UICollectionView

Ich möchte feste verblasste Farbverläufe ganz links & weit rechts von dieser UICollectionView hinzufügen, so dass die Schriftrollen verschwinden, wenn der Benutzer scrollt. Wie würde ich das machen? Wird CAGradientLayer verwendet? Ich wäre dankbar für jede Hilfe, die Sie mir geben können!

Antwort

1

Versuchen zwei Schichten CAGradientLayer auf der Sammlung Ansicht Unterschicht hinzuzufügen:

#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

ich es tatsächlich geschafft, diese eine Maskenschicht dank this tutorial at cocoanetics mit herauszufinden. Hier ist, was ich getan habe:

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

Dann in der .m, ich in der folgenden platziert:

- (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]; 
    } 
} 

Dies schafft eine schöne "Fade to Black" -Effekt auf beiden Seiten meiner Sammlung Ansicht. Den Positionen & können weitere Farben hinzugefügt werden, um die Farbverlaufsverfeinerung zu verfeinern. Die Start-/Endpunkte bestimmen die Richtung und den Ort des Gradienten.

Verwandte Themen