文档章节

iOS定向阴影的探讨

RainOrz
 RainOrz
发布于 07/23 18:51
字数 380
阅读 13
收藏 0
iOS
    view.layer.shadowColor = [UIColor blackColor].CGColor;
    view.layer.shadowOpacity = 0.8f;
    view.layer.shadowRadius = 4.f;
    view.layer.shadowOffset = CGSizeMake(0,0);

iOS中阴影可以用如上代码实现,那么定向阴影怎么实现呢?

项目中有些界面比较特殊,UI切图无法满足,但是又要实现阴影,然后我发现,圆角可以通过贝塞尔来做:

UIBezierPath *maskPath  = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:isAll?(UIRectCornerAllCorners):(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(10, 10)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    view.layer.mask = maskLayer;

那阴影可不可以呢?

经测试发现,只要你设置了指定路径,不光是阴影,定向阴影都可以,当然实现起来可能有点low...

比如设置只有top有阴影:

 CGFloat paintingWidth = self.firImage.frame.size.width;
    //路径阴影
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0, 0)];
    
    //添加直线
    [path addLineToPoint:CGPointMake(paintingWidth, 0)];
    [path addLineToPoint:CGPointMake(paintingWidth, 3)];
    [path addLineToPoint:CGPointMake(0, 3)];
    [path addLineToPoint:CGPointMake(0, 0)];
    //设置阴影路径
    self.firImage.layer.shadowPath = path.CGPath;

设置上右阴影:

 CGFloat paintingWidth = self.secImage.frame.size.width;
    CGFloat paintingHeight = self.secImage.frame.size.height;
    //路径阴影
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0, 0)];
    
    //添加直线
    [path addLineToPoint:CGPointMake(paintingWidth, 0)];
    [path addLineToPoint:CGPointMake(paintingWidth, paintingHeight)];
     //设置阴影路径
    self.secImage.layer.shadowPath = path.CGPath;

当然了。。。上下也可以的:

只是有点low:

  CGFloat paintingWidth = self.fouImage.frame.size.width;
    CGFloat paintingHeight = self.fouImage.frame.size.height;
    //路径阴影
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0, 0)];
    
    //添加直线
    [path addLineToPoint:CGPointMake(paintingWidth, 0)];
    [path addLineToPoint:CGPointMake(paintingWidth/2, paintingHeight/2)];
    [path addLineToPoint:CGPointMake(paintingWidth, paintingHeight)];
    [path addLineToPoint:CGPointMake(0, paintingHeight)];//收回去
    [path addLineToPoint:CGPointMake(paintingWidth/2, paintingHeight/2)];
    
    //设置阴影路径
    self.fouImage.layer.shadowPath = path.CGPath;

满足需求了。。。emmm

但是貌似很卡。。暂时先记录一下

© 著作权归作者所有

共有 人打赏支持
RainOrz
粉丝 7
博文 104
码字总数 80823
作品 0
青浦
程序员
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
0
0
react native基础(四)

1.阴影 官网中明确表示在react native中阴影的样式属性shadow...都是只支持iOS的,并不支持Android。 目前有个方法,可以让Android有灰色的阴影,但是无法指定Android机上的阴影色值,只能是...

Chason-洪
2017/12/01
0
0
ios UIViewController的误用

如果在一个UIViewController中有如下代码,你可能就在误用UIViewController [viewController.view addSubview:someOtherViewController.view]; viewController.view.bounds = CGRectMake(50,......

董桉远
2013/08/16
0
0
iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码

iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件(http://www.code4app.com/thread-14507-1-1.html) iOS高仿微信完整项目源码(http://www.code4app.com/thread-14695-1-1.html)......

sunnyaigd
06/12
0
0
iOS使用xcode可视化图像编辑功能进行图片拉伸

iOS中可视化拉伸图片技巧 一、补充 在我的另一篇博客http://my.oschina.net/u/2340880/blog/403996中探讨了IOS拉伸图像(UIImage)的几种方法和一些小经验,这篇是一个补充,再将xcode中的另一...

珲少
2015/04/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Zookeeper总结

Zookeeper的部分概念 什么是zookeeeper? Zookeeper是一个分布式服务的协调中心 zookeeper节点的角色类型? Leader(领导者)、Follower(跟随者)、Observer(观察者) Leader 负责更新系统...

DemonsI
9分钟前
0
0
Redis学习笔记

常用命令 从Docker进入Redis的命令 sudo docker exec -it redis /bin/bash

OSC_fly
10分钟前
0
0
SqlServer查询某个日期的数据

select * from View_ZJMONITORINGCORROSION where ENTERDATE > CONVERT(datetime,DATEADD(day,1,'2017/12/28 14:53:07'))...

笑丶笑
11分钟前
0
0
常用编码规范

Standard characters https://ascii.cl/

yeahlife
13分钟前
0
0
flannel实战

docker swarm mode的出现是个里程碑,官方原生的编排调度看起来都成雏形了,但是swarm mode和容器外部系统的对接、网络性能始终不尽人意,swarm mode下各种开源周边不能使用,感觉swarm mod...

China_OS
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部