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. nRF52系列——Get started

    Install Jlink Install MDK 这里的使用的是MDK 5.14 Install SDK https://developer.nordicsemi.com/nRF52_SDK/ 这里 ...

  2. 安装windows操作系统

    我认为windows安装有两种源文件,一种是ghost(.gho),一种是安装包(setup.exe). ghost安装是把将一个硬盘中的数据(.gho)完全相同地恢复到系统硬盘中.优点是速度快,而且 ...

  3. SpringSecurity数据库中存储用户、角色、资源

    这几天项目中用到了SpringSecurity做登陆安全.所以在这写一下也许可以帮助一下其他人,自己也熟悉一下 SpringSecurity配置文件如下: <beans:beans xmlns= ...

  4. Rails中的测试RSpec升级遇到的问题

    bundle exec rspec spec/ /home/wuxj/Prac/rrprac/sample_app/spec/spec_helper.rb::in `block in <top ...

  5. [BZOJ 3144] [Hnoi2013] 切糕 【最小割】

    题目链接:BZOJ - 3144 题目分析 题意:在 P * Q 的方格上填数字,可以填 [1, R] . 在 (x, y) 上填 z 会有 V[x][y][z] 的代价.限制:相邻两个格子填的数字的 ...

  6. BuzzSumo:什么样的文章能获得疯转?(基于1亿篇文章大数据分析)

    BuzzSumo:什么样的文章能获得疯转?(基于1亿篇文章大数据分析) 社交媒体追踪服务分析工具BuzzSumo,2014年5月前后对社交媒体上超过1亿篇文章进行了分析,试图找出一个答案: 什么样的内 ...

  7. 【Maven】解决maven打jar包报错 source 1.3 中不支持注释 (请使用 -sour

    问题:maven在进行打包时,报 '请使用-source 5 或者更高版本以启用XX'的信息并导致打包失败. 原因:maven默认的编译插件的java版本较低,导致其不支持例如泛型,注解等用法. 解决 ...

  8. XP系统VPN设置

    为了解除公司上网策略限制,或者为了上Google,Facebook,都可以通过设置VPN实现. 要使用VPN需要到VPN服务商注册,链接VPN服务商. ======================== ...

  9. 【HDOJ】1688 Sightseeing

    Dijkstra求解次短路径,使用cnt和dis数组记录最小.次小的个数和长度.重写更新操作. /* 1688 */ #include <iostream> #include <st ...

  10. Linux数据备份

    今天需要用到备份网站,写了个脚本,备份了mysql和redis数据. #!/bin/bash BACKDIR="/home/tan/getll_backup" if [ ! -d ...