Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
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; }