UIView阴影和圆角的关系

 
UIView 的 clipsToBounds属性和CALayer的setMasksToBounds属性表达的意思是一致的。

取值:BOOL(YES/NO)

作用:决定了子视图的显示范围。具体的说,就是当取值为YES时,剪裁超出父视图范围的子视图部分;当取值为NO时,不剪裁子视图。默认值为NO。

如下图所示:view2是view1的子视图  右边为yes的情况

先理解setMasksToBounds的含义,下面的代码就容易理解了。

让UIView圆角显示很简单,只需要三行代码

CALayer * layer = [avatarImageView layer];

  [layer setMasksToBounds:YES];

  [layer setCornerRadius:9.0];

但是,如给给圆角view加阴影,传统加阴影的方法是不行的,

  传统的方法就是:

  avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor;

  avatarImageView.layer.shadowOffset = CGSizeMake(0, 1);

  avatarImageView.layer.shadowOpacity = 1;

因为setMasksToBounds表示对frame外的内容进行了裁减,只可显示frame内的内容。由于这种方法加的阴影在frame外,所以被裁减了。

  传统方法不行,那我们可以把圆角的avatarImageView放到一个大小与它一样的的UIView中,让这个view有阴影,那效果看起来就一样了。

  CGRect rect = CGRectMake(0, 0, 48, 48);

  avatarImageView = [[UIImageView alloc] initWithFrame:rect];

  avatarImageView.image = [UIImage imageNamed:@"test.png"];

  //Round the corners

  CALayer * layer = [avatarImageView layer];

  [layer setMasksToBounds:YES];

  [layer setCornerRadius:9.0];

  //Add a shadow by wrapping the avatar into a container

  UIView * shadow = [[UIView alloc] initWithFrame: rect];

  avatarImageView.frame = CGRectMake(0,0,rect.size.width, rect.size.height);

  // setup shadow layer and corner

  shadow.layer.shadowColor = [UIColor grayColor].CGColor;

  shadow.layer.shadowOffset = CGSizeMake(0, 1);

  shadow.layer.shadowOpacity = 1;

  shadow.layer.shadowRadius = 9.0;

  shadow.layer.cornerRadius = 9.0;

  shadow.clipsToBounds = NO;

  // combine the views

  [shadow addSubview: avatarImageView];

[self.view addSubView:shadow];

UIView阴影和圆角的关系的更多相关文章

  1. swift 设置阴影和圆角

    1.正常view设置阴影 func setShadow(view:UIView,sColor:UIColor,offset:CGSize, opacity:Float,radius:CGFloat) ...

  2. (一一九)通过CALayer实现阴影、圆角、边框和3D变换

    在每个View上都有一个CALayer作为父图层,View的内容作为子层显示,通过layer的contents属性决定了要显示的内容,通过修改过layer的一些属性可以实现一些华丽的效果. [阴影和圆 ...

  3. CSS 笔记——阴影、圆角、旋转、光标

    7. 阴影.圆角.旋转.光标 (1)box-shadow 阴影 基本语法 text-shadow: h-shadow v-shadow blur color; box-shadow: h-shadow ...

  4. iOS之美: UIView 与 UIWindow之间的关系

    转自:http://leopard168.blog.163.com/blog/static/168471844201381584533466/ 面对iOS初学者,总会被问到一些不常被关注的问题,比如: ...

  5. HTML 透明、阴影,圆角等知识点

     table两个属性:cellpadding:内容与单元格边框的距离,内部距离cellspacing:单元格之间的距离,外部距离    table合并边框线:  border-collapse: co ...

  6. IOS 图片阴影,圆角等处理

    一直以来,为IOS添加图片的特殊效果都是通过跟美工的配合,比如,要加阴影,就从美工那边获得一张阴影效果图,在界面上画两个UIImageView,将阴影放在下面,图像放上上面,错开一定角度.有比如想做圆 ...

  7. UIView和CALayer是什么关系?

    UIView显示在屏幕上归功于CALayer,通过调用drawRect方法来渲染自身的内容,调节CALayer属性可以调整UIView的外观,UIView继承自UIResponder,比起CALaye ...

  8. UIView的任意圆角

    今天在做项目的时候,遇到一个问题,grouped类型的tableview 怎么样才能让他们的一个view 其中一个角圆角? 如上图所示,其实我是用UILabel,但是箭头的位置总是尖的不太好看.设置l ...

  9. CSS3 阴影与圆角边框

    ㈠css3的新特性实际应用 ⑴文本阴影效果,用代码编写的方式实现   ⑵鼠标悬停的动态效果 左侧三幅图片,上面初始状态是没有说明文本的,但把鼠标放在上面的时候,这个图片上面就出现了说明文字   ⑶分栏 ...

随机推荐

  1. Don’t Assume – Per Session Buffers

    MySQL has a number of global buffers, i.e. your SGA. There are also a number of per session/thread b ...

  2. mysql提权笔记

    最近小菜遇到mysql提权,总是会搞错,就记记笔记吧!以后方便用 先说手工吧! mysql<5.0,导出路径随意:5.0<=mysql<5.1,则需要导出至目标服务器的系统目录(如: ...

  3. linux概念之用户,组及权限

    Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念 单用户多任务一个beinan用户,为了完成工作,执行了几个任务:当然beinan这个用户,其它的人还能以远程登 ...

  4. mybatis migrate常用指令

    0.制定db和配置文件 --path=xxx --env=dev 1.初始化Migrations工作目录 migrate init 2.创建数据库变更 migrate new "liyq a ...

  5. [mysql] mysql explain 使用

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid, ...

  6. Android Intent 用法全面总结

    [代码全屏查看]-Android Intent 用法全面总结 // [1].[代码] 调用拨号程序 跳至 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] / ...

  7. EnterpriseLibrary之Caching应用

    http://blog.csdn.net/linux7985/article/details/6239433 http://cache.baiducontent.com/c?m=9f65cb4a8c8 ...

  8. (转)颜色渐变CSS

    本文转载自:http://www.cnblogs.com/yichengbo/archive/2012/10/27/2742618.html IE系列 filter: progid:DXImageTr ...

  9. android学习笔记七——控件(DatePicker、TimePicker、ProgressBar)

    DatePicker.TimePicker ==> DatePicker,用于选择日期 TimePicker,用于选择时间 两者均派生与FrameLayout,两者在FrameLayout的基础 ...

  10. boa配置文件详解

    Web服务器boa配置文件参数说明 boa的配置文件是/etc/boa/boa.conf.Port:boa服务器监听的端口,默认的端口是80.如果端口小于1024,则必须是  root用户启动服务器. ...