文档章节

iOS定向阴影的探讨

RainOrz
 RainOrz
发布于 07/23 18:51
字数 380
阅读 18
收藏 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
粉丝 8
博文 123
码字总数 85815
作品 0
青浦
程序员
定制iOS 7中的导航栏和状态栏

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

谁家的阿毛
2013/11/21
0
0
react native之ios打包ipa

http://www.cocoachina.com/ios/20170511/19250.html http://reactnative.cn/post/3600 第一步:导出js bundle包和图片资源 先进入项目根目录release_ios文件夹 参数: --entry-file :ios或......

Chason-洪
2017/11/25
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

没有更多内容

加载失败,请刷新页面

加载更多

idea 通过jpa自动生成实体类

引入jpa包 打开persistence窗口 右键选择连接数据库 如果数据库没配置,则可以在下图选项中配置 选择好数据库和实体类的生成地址

斩神魂
29分钟前
1
0
tcpdump 命令

TCPDUMP简介 tcpdump 是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包。tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 Linu...

寰宇01
37分钟前
2
0
软件的Alpha、Beta、RC、GA版本的区别

Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。 Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 RC:(Release Candidate) 顾名思义...

乔老哥
38分钟前
2
0
慢雾安全海贼王:从DApp亡灵军团,细说区块链安全

本文转载自微信公号“万向区块链”,为慢雾安全负责人海贼王在万向区块链实验室举办的2018上海区块链国际周-技术开放日上的演讲速记整理。 这张图总结了智能合约攻防的各个方面,分为两大部分...

万向区块链
44分钟前
13
0
Matlab编程之——卷积神经网络CNN代码解析

卷积神经网络CNN代码解析 deepLearnToolbox-master是一个深度学习matlab包,里面含有很多机器学习算法,如卷积神经网络CNN,深度信念网络DBN,自动编码AutoE ncoder(堆栈SAE,卷积CAE)的作...

酒逢知己千杯少
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部