iOS–为视图添加阴影

情况一:视图添加圆角,在添加阴影

   //阴影视图
self.viewShadow = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
self.viewShadow.backgroundColor = [UIColor redColor];
self.viewShadow.layer.shadowOpacity = 1;
self.viewShadow.layer.cornerRadius = 5;
self.viewShadow.layer.borderWidth = 1;
self.viewShadow.layer.masksToBounds = YES;
//阴影视图背景
self.viewShadowBg = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
self.viewShadowBg.layer.shadowOpacity = 1;
self.viewShadowBg.layer.shadowOffset = CGSizeZero;
self.viewShadowBg.layer.shadowColor = [UIColor greenColor].CGColor;
self.viewShadowBg.layer.shadowRadius = 10;
self.viewShadowBg.layer.borderWidth = 1;
self.viewShadowBg.layer.borderColor = [UIColor grayColor].CGColor;
self.viewShadowBg.layer.cornerRadius = 5;

情况二:自定义视图阴影效果

自定义视图阴影,我们用到的是这个属性:view.layer.shadowPath,我们通过这个属性来自定义视图阴影。

贝塞尔曲线

这里我们还用到了贝塞尔曲线,通过数学方式来描述图形效果,常见于计算机中图像的描述。objective-c中通过UIBezierPath来描述贝塞尔曲线。贝塞尔曲线知识点补充:

Bezier曲线简介

贝塞尔曲线-维基百科

实现正常矩形效果:

    UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(100, 100, 100, 100);
view.center = self.view.center;
view.backgroundColor = [UIColor clearColor];
view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOpacity = 0.7f;
view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
view.layer.shadowRadius = 2.0f;
view.layer.masksToBounds = NO;
//正常矩形
UIBezierPath *path = [UIBezierPath bezierPathWithRect:view.bounds];
view.layer.shadowPath = path.CGPath;
[self.view addSubview:view];

实现自定义画梯形:

    UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(100, 100, 100, 100);
view.center = self.view.center;
view.backgroundColor = [UIColor clearColor];
view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOpacity = 0.7f;
view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
view.layer.shadowRadius = 2.0f;
view.layer.masksToBounds = NO;
//自定义画梯形
CGSize size = view.bounds.size;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(size.width * 0.33f, size.height * 0.66f)];
[path addLineToPoint:CGPointMake(size.width * 0.66f, size.height * 0.66f)];
[path addLineToPoint:CGPointMake(size.width * 1.15f, size.height * 1.15f)];
[path addLineToPoint:CGPointMake(size.width * -0.15f, size.height * 1.15f)];
view.layer.shadowPath = path.CGPath;
[self.view addSubview:view];

实现自定义大小椭圆形:

    UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(100, 100, 100, 100);
view.center = self.view.center;
view.backgroundColor = [UIColor clearColor];
view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOpacity = 0.7f;
view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
view.layer.shadowRadius = 2.0f;
view.layer.masksToBounds = NO;
//自定义大小椭圆形
CGRect ovalRect = CGRectMake(0, 0, 100, 20);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:ovalRect];
view.layer.shadowPath = path.CGPath;
[self.view addSubview:view];

iOS--为视图添加阴影的更多相关文章

  1. iOS 为视图添加抖动效果

    抖动效果在开发中比较少用到,不过有时使用了确有个很好的装逼效果,用的时候就例如一些用户错误操作之类的 效果如下,不过gif看到的效果没实际的好看 上代码 - (void)shakeAnimationF ...

  2. ios 给UIImageView添加阴影

    _borderView.layer.shadowColor = [UIColor grayColor].CGColor; _borderView.layer.shadowOffset = CGSize ...

  3. Xamarin iOS教程之添加和定制视图

    Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时 ...

  4. ios开发之--为父view上的子view添加阴影

    项目中碰到一个问题,在tableview的headerview里面有很一个子view,设计师的要求是在下方添加一个阴影,效果如下: 以前的实现思路就是,代码如下: 添加阴影 调用视图的 layer C ...

  5. iOS TabBar添加阴影

    效果图如下所示: 直接上代码 //移除顶部线条 self.tabBar.backgroundImage = [UIImage new]; self.tabBar.shadowImage = [UIIm ...

  6. UIVisualEffectView为视图添加特殊效果

    在iOS 8后,苹果开放了不少创建特效的接口,其中就包括创建毛玻璃(blur)的接口. 通常要想创建一个特殊效果(如blur效果),可以创建一个UIVisualEffectView视图对象,这个对象提 ...

  7. iOS 让视图UIView单独显示某一侧的边框线

    iOS 让视图UIView 单独显示某一侧的边框线   有时候需要让view显示某一侧的边框线,这时设置layer的border是达不到效果的.在网上查阅资料发现有一个投机取巧的办法,原理是给view ...

  8. [Xcode 实际操作]二、视图与手势-(6)给图像视图添加阴影效果

    目录:[Swift]Xcode实际操作 本文将演示给图像视图添加阴影效果 import UIKit class ViewController: UIViewController { override ...

  9. [Swift通天遁地]六、智能布局-(1)给视图添加尺寸和中心点的约束

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

随机推荐

  1. Ubuntu启动错误Checking Battery State的处理

    一.问题描述 二.处理方法 方法一: 按下 ctrl + alt + F1,进入终端,使用管理员权限执行下列代码 sudo rm /etc/X11/xorg.conf sudo reboot 方法二: ...

  2. gcc/g++编译

    1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).汇编,将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] (3).编译,将 ...

  3. Junit 源码剖析(二)

    junit4 下的所有的testcase都是在Runner下执行的, 可以将Runner理解为junit运行的容器, 默认情况下junit会使用JUnit4ClassRunner作为所有testcas ...

  4. Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决

    今天遇到了跟下面文章一模一样的问题,下面文章的解决方案很好,在这里记录保存一下. Spring3+MyBatis3整合无法输出SQL语句问题的解决

  5. windows下端口被占用的解决方法

    1:打开CMD输入:netstat -ano | findstr "80" 找到PID: 2:查看应用名称:tasklist | findstr "2544" ...

  6. MVC自学系列之三(MVC视图-Views)

    View的约定 1.根据约定,Views目录下包含着每一个与Controller同名但是没有像Controller后缀的文件夹:因此对于控制器HomeController就对应在views目录下有个目 ...

  7. 【 POJ - 3801】Crazy Circuits(有源汇、上下界最小流)

    Description You’ve just built a circuit board for your new robot, and now you need to power it. Your ...

  8. Keil工程文件的建立、设置与目标文件的获得

    单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工 汇编的方法了.机器汇编是通过汇编软件 ...

  9. 织梦CMS(dedecms)栏目属性及系统封面模板、列表模板、文章模板区别和路径设置解答

    问题一:(织梦"栏目管理"的"常规选项"中3个栏目属性分析?) 织梦CMS的栏目属性分成三种, -->最终列表栏目 -->频道封面 -->外部 ...

  10. 高德地图搜索提示获取信息回传activity刷新ui(二)

    应用场景: 在主activity中点击进入到另一个activity搜索提示,获取经纬度,点确定返回到主activity,虽然说需求很奇葩,但是遇到了没办法.. 主要包含两部分,搜索提示+activit ...