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. Cinder-2 窗口的创建过程

    通过TinderBox生成的代码很简单,整个代码如下: #include "cinder/app/AppNative.h" #include "cinder/gl/gl. ...

  2. Java操作Oracle数据库以及调用存储过程

    操作Oracle数据库 publicclass DBConnection {     //jdbc:oracle:thin:@localhost:1521:orcl     publicstaticf ...

  3. 转:实用 .htaccess 用法大全

    原文来自于:http://www.techug.com/htaccess-snippets 这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代 ...

  4. C连接MySQL数据库开发之Xcode环境配置及测试

    一.开发环境 Mac OS X 10.9.2 64位.Xcode5.1.MySQL5.5.37 64位 MySQL安装目录为:/usr/local/mysql 二.配置xcode连接mysql的编译选 ...

  5. bzoj 3624: [Apio2008]免费道路 生成树的构造

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 111  Solved: 4 ...

  6. [BZOJ 1036] [ZJOI2008] 树的统计Count 【Link Cut Tree】

    题目链接:BZOJ - 1036 题目分析 这道题可以用树链剖分,块状树等多种方法解决,也可以使用 LCT. 修改某个点的值时,先将它 Splay 到它所在的 Splay 的根,然后修改它的值,再将它 ...

  7. R文件相关(坑)

    大家来找茬...为什么会出现红字,不能正确引用R文件管理的资源呢? 罪魁祸首就是那个import android.R(我根据IDE提示而自作聪明引用的) 删除那行以后,就不会红字了. 刚开始是拷贝了图 ...

  8. Reporting Services 钻取报表、子报表

    一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...

  9. PYTHON文本处理指南之日志LOG解析

    处理特定字段的内容,并指指定条件输出. 注意代码中用一个方法列表,并且将方法参数延后传递. GOOGLE作过PYTHON代码的水平,就是不一样呀. 希望能学到这种通用的技巧. 只是,英文PDF看起来有 ...

  10. mysql之索引方面的知识点总结

    索引的类型: 普通索引:这是最基本的索引类型,没唯一性之类的限制. 唯一性索引:和普通索引基本相同,但所有的索引列只能出现一次,保持唯一性. 主键:主键是一种唯一索引,但必须指定为"PRIM ...