IOS Layerの使用(シャドウ)
6590 ワード
CALayer(レイヤ)は、画面上の矩形領域であり、各UIViewにはルートCALayerが含まれており、UIView上のすべての視覚効果はこのLayer上で行われている.
CALayerの外形特徴は主に以下の通りである.
1、層の大きさ寸法
2、背景色
3、内容(画像を埋めたり、Core Graphicsで描いたりできる内容)
4、長方形にフィレットを使用するかどうか
5、長方形に影があるかどうか
Layerにはいろいろな種類がありますが、最もよく使われているのはCALayerです.もちろん、他のサブクラスも含まれています.
CAScrollerLayer表示レイヤの一部を簡略化
CATextLayerテキストレイヤ
CAGradientLayer、CAShapeLayerなど
層を使用する前に、プロジェクトにQuartzCoreを導入する必要があります.フレームワーク
例:
新しいXCodeプロジェクトLayerSampleを作成し、QuartzCoreをインポートします.famework
LayerSampleViewControllerでhファイルに導入:
CALayerの外形特徴は主に以下の通りである.
1、層の大きさ寸法
2、背景色
3、内容(画像を埋めたり、Core Graphicsで描いたりできる内容)
4、長方形にフィレットを使用するかどうか
5、長方形に影があるかどうか
Layerにはいろいろな種類がありますが、最もよく使われているのはCALayerです.もちろん、他のサブクラスも含まれています.
CAScrollerLayer表示レイヤの一部を簡略化
CATextLayerテキストレイヤ
CAGradientLayer、CAShapeLayerなど
層を使用する前に、プロジェクトにQuartzCoreを導入する必要があります.フレームワーク
例:
新しいXCodeプロジェクトLayerSampleを作成し、QuartzCoreをインポートします.famework
LayerSampleViewControllerでhファイルに導入:
#import <QuartzCore/QuartzCore.h>
LayerSampleViewController.m , :
#import "LayerSampleViewController.h"
@implementation LayerSampleViewController
- (void)loadView {
UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
rootView.backgroundColor = [UIColor whiteColor];
self.view = rootView;
[rootView release];
// layer
backLayer = [CALayer layer];
backLayer.backgroundColor = [UIColor orangeColor].CGColor;
backLayer.bounds = CGRectMake(10, 10, 1004, 728); // layer
backLayer.position = CGPointMake(1024/2, 768/2-10); // layer
[self.view.layer addSublayer:backLayer];
}
- (void)dealloc {
[super dealloc];
}
@end
プログラムの :
UIVEを するために、UIVEの を 、backLayerの をオレンジ に しました.
は の です. の4つの を に すると、 の を できます.
backLayer.cornerRadius = 20.0;// の
プログラムを すると、 は のようになります.
きサブLayer(レイヤ)を します.コード: // layer
CALayer *cyanLayer = [CALayer layer];
cyanLayer.backgroundColor = [UIColor cyanColor].CGColor;
cyanLayer.bounds = CGRectMake(0, 0, 300, 300);
cyanLayer.position = CGPointMake(180, 180);
cyanLayer.shadowOffset = CGSizeMake(0, 3); //
cyanLayer.shadowRadius = 10.0; //
cyanLayer.shadowColor = [UIColor blackColor].CGColor; //
cyanLayer.shadowOpacity = 0.9; //
[backLayer addSublayer:cyanLayer];
を します.
サブLayerに を
//サブイメージレイヤーの UIImage *image = [UIImage imageNamed:@"feiche.jpg"];
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
imageLayer.shadowOffset = CGSizeMake(0, 3); //
imageLayer.shadowRadius = 10.0; //
imageLayer.shadowColor = [UIColor blackColor].CGColor; //
imageLayer.shadowOpacity = 0.9; //
[backLayer addSublayer:imageLayer];
、
に 、コード:imageLayer.borderColor = [UIColor grayColor].CGColor; //
imageLayer.borderWidth = 2.0; //
:
を 、コードに します.imageLayer.cornerRadius = 10.0; // layer
imageLayer.masksToBounds = YES; //
:
ただし、masksToBoundsプロパティをtrueに することでLayerのシャドウ はなくなります.
は、 をシャドウ のある に していました.これにより、シャドウ が を りつぶすだけであれば、2つのLayerを してシャドウ を することができます.コード: UIImage *image = [UIImage imageNamed:@"feiche.jpg"];
// layer
CALayer *shadowLayer = [CALayer layer];
shadowLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);
shadowLayer.backgroundColor = [UIColor blueColor].CGColor;
shadowLayer.shadowOffset = CGSizeMake(0, 3);
shadowLayer.cornerRadius = 10.0;
shadowLayer.shadowRadius = 10.0;
shadowLayer.shadowColor = [UIColor blackColor].CGColor; //
shadowLayer.shadowOpacity = 1.0; //
[backLayer addSublayer:shadowLayer];
// image layer
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
imageLayer.cornerRadius = 10.0; // layer
imageLayer.masksToBounds = YES; //
imageLayer.borderColor = [UIColor grayColor].CGColor; //
imageLayer.borderWidth = 2.0;
[backLayer addSublayer:imageLayer];
の :