ios-day18-01(CALayer的基本属性)

CALayer的常用属性

宽度和高度:

@property CGRect bounds;


位置(默认是指中点的位置,具体由anchorPoint决定)

@property CGPoint position;


锚点(x,y的范围都是0~1)

@property CGPoint anchorPoint;


背景颜色(CGColorRef类型)

@property CGColorRef backgroundColor;


形变属性(这个属性可以设置CALayer在三维坐标中的平移、缩放、旋转等。)

@property CATransform3D transform;


边框颜色

@property CGColorRef borderColor;


边框宽度

@property CGFloat borderWidth;


圆角半径

@property CGFloat cornerRadius;


内容(比如设置为图片CGImageViewRef)

@property(retain)id contents;


在ios中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。

其实UIView之所以能显示在屏幕上,是因为它内部的一个图层

在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层。

当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕,于是就完成了UIView的显示。

换句话说,UIView本身不具备显示的功能,是它内部的层有显示功能。


通过CALayer对象,可以很方便的调整UIView的一些外观属性,比如:阴影、圆角大小、边框宽度和颜色等等,还可以给图层添加动画来实现一些比较炫酷的效果。

下面这幅效果图是对UIView喝UIImageView设置layer之后的效果:

      图1:


源码下载地址:http://download.csdn.net/detail/liu537192/8553037

核心代码:

//
//  JLViewController.m
//  01-CALayer的使用
//
//  Created by XinYou on 15-4-1.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "JLViewController.h"

@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIView *myUIView;

@property (weak, nonatomic) IBOutlet UIImageView *myUIImageView;
@end

@implementation JLViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self setUIViewLayer];
    
    [self setUIImageViewLayer];
}
/**
 *  设置UIImageView的图层
 */
- (void)setUIImageViewLayer{

    // 设置边框宽度
    self.myUIImageView.layer.borderWidth = 5;
    // 设置边框颜色
    self.myUIImageView.layer.borderColor = [UIColor grayColor].CGColor;// UIColor转成CGColor
    // 设置圆角
    self.myUIImageView.layer.cornerRadius = 10;
    
    // 以上3行代码的效果图如图1所示
    // 可以看出设置边框和圆角之后,四个角没有按照边框剪掉超出部分。那为什么UIView没有出现这样的情况呢?
    // 因为UIView只有一层layer(即主层),而UIImageView除了主层layer,还有一层用于显示图片
    // 上面3行代码都是对主层进行设置。
    // 下面这句代码的意思是:超过主层显示范围的都剪掉。
    self.myUIImageView.layer.masksToBounds = YES;
    
    // 当然,如果超过主层显示范围都剪掉,那么阴影也不会显示了。下面这3行代码写或者不写都一样。
    
    // 设置阴影颜色
//    self.myUIImageView.layer.shadowColor = [UIColor blueColor].CGColor;
    // 设置阴影偏差
    // CGSizeMake(width, height):假设width = 6,表示右边阴影宽度为6;假设width = -6,表示左边阴影宽度为6
//    self.myUIImageView.layer.shadowOffset = CGSizeMake(6, 8);
    // 设置阴影的不透明度(和透明度相反)
//    self.myUIImageView.layer.shadowOpacity = 0.5;
}

/**
 *  设置UIView的图层
 */
- (void)setUIViewLayer{

    // 设置边框宽度
    self.myUIView.layer.borderWidth = 5;
    // 设置边框颜色
    self.myUIView.layer.borderColor = [UIColor grayColor].CGColor;// UIColor转成CGColor
    // 设置圆角
    self.myUIView.layer.cornerRadius = 8;
    
    // 设置阴影颜色
    self.myUIView.layer.shadowColor = [UIColor blueColor].CGColor;
    // 设置阴影偏差
    // CGSizeMake(width, height):假设width = 6,表示右边阴影宽度为6;假设width = -6,表示左边阴影宽度为6
    self.myUIView.layer.shadowOffset = CGSizeMake(6, 8);
    // 设置阴影的不透明度(和透明度相反)
    self.myUIView.layer.shadowOpacity = 0.5;
}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值