Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint

Lösung

Sie können ein CALayer definieren, um einen Schatten anzuzeigen, der der Gestalt des nicht transparenten Inhalts des Layers folgt und im Verhältnis zum Bildinhalt versetzt ist, um so den Eindruck zu erwecken, der View werde im Relief angezeigt oder sei von seinem Hintergrund abgehoben. Apple hat in iOS 3.2 die neue Eigenschaft shadowPath eingeführt, die einen Schattenpfad definiert. Dieser Pfad muss der Gestalt des CALayer-Inhalts nicht folgen, wir können also etwas kreativer sein und über den Standard-Relief-Schatten hinausgehen. Für dieses Beispiel werden wir ein Bild einer Wolke aufbauen, die ihren abgeflachten Schatten auf den Boden wirft, während sie über den Bildschirm gleitet.

GraphicsGarden/PRPCloud.m

- (void)drawRect:(CGRect)rect {
    CGFloat fullHeight = self.bounds.size.height;
    CGPoint top = CGPointMake(0, 0);
    CGPoint bottom = CGPointMake(0, fullHeight);
    UIBezierPath *pPath = [self CreatePathWithHeight:
                                              self.bounds.size.height];
    [pPath addClip];
    CGGradientRef gradient = [self gradientWithColor:self.innerColor
                                             toColor:self.outerColor
                                               count:2];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextDrawLinearGradient(context,
                                gradient,
                                top,
                                bottom,
                            ....if (!self.shadowDistance) shadowDistance = self.bounds.size.height*1.8;
    self.alpha = 0.9;
    self.layer.shadowOffset = CGSizeMake(0, self.shadowDistance);
    self.layer.shadowOpacity = 0.4;
}

  

You are currently reading a PREVIEW of this book.

                                                                                        

Get instant access to over
$1 million worth of books and videos.

  

Start a Free Trial