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. GPU优化方法[转]

    CUDA优化的最终目的是:在最短的时间内,在允许的误差范围内完成给定的计算任务.在这里,“最短的时间”是指整个程序运行的时间,更侧重于计算的吞吐量,而不是单个数据的延迟.在开始考虑使用GPU和CPU协 ...

  2. Partial RenderPartial Action RenderAction 区别和用法

    区别: 1.Partial 与 RenderPartial 两个方法性质基本一样,只是把一个静态用户控件给嵌入进来. 2.Partial 回传一堆html代码,直接写进到页面上@Html.Partia ...

  3. Java基础试题

      1.使用Java语言编写的源程序保存时的文件扩展名是( B ). (A).class          (B).java            (C).cpp            (D).txt ...

  4. sqlite-dbeaver-heidisql

    http://www.sqlite.org/ http://www.sqliteexpert.com/ gui工具 这个网站的大部分信息在2015-10-9阅读完毕,下一步是阅读软件自带的帮助文档 将 ...

  5. 题目1049:字符串去特定字符——九度OJ

    题目1049:字符串去特定字符 http://ac.jobdu.com/problem.php?pid=1049 时间限制:1 秒 内存限制:32 兆 题目描述: 输入字符串s和字符c,要求去掉s中所 ...

  6. unity 4 Please check your configuration file and verify this type name.

    The problem is in you config file. You are mixing two concepts with some incorrect syntax. The <a ...

  7. 深入认识JavaScript 中的this指针

    深入认识JavaScript 中的this指针this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象.在实现对象的方法时,可以使用this指针来获得该对象自身的引用.和传统意义的面向对象 ...

  8. select跳转

    <select onchange="window.open(this.options[this.selectedIndex].value)"><option> ...

  9. 结合Scikit-learn介绍几种常用的特征选择方法

    特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减 ...

  10. 【Reporting Services 报表开发】— 数据表的使用

    一.打开 SQL Server Business Intelligence Development Studio,新建项目—>商业智能项目—> 报表服务器项目,命名为CH3 二.在报表文件 ...