文档章节

iOS定向阴影的探讨

RainOrz
 RainOrz
发布于 07/23 18:51
字数 380
阅读 23
收藏 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
博文 134
码字总数 89112
作品 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
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
Android 用户活跃度仅为 iOS 用户的 1/7

Net Applications最新发布的报告获悉,尽管Android设备的市场出货量份额高达85%,iOS仅为11.9%,但这两大平台在使用量方面的份 额却基本相当,表明Android用户的平均手机使用量仅为iOS的七分...

oschina
2014/08/05
2.8K
22
开源渲染引擎 WebKit 曝出 iOS 8和 OS X 10.10新 API

苹果在 WWDC 2014发布会上发布 iOS 8和 OS X 10.10,现在有人发现,新系统的 API 已经出现在开源软件中。这份被称为 WKWebView.h 的文件是开源渲染引擎 WebKit 的一部分,这里的代码完成的功...

oschina
2014/06/03
4.5K
9

没有更多内容

加载失败,请刷新页面

加载更多

对接比特币钱包的PHP开发包

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸...

汇智网教程
7分钟前
0
0
【自用】 VHD to VHDX

VHDX: 在VHD 2TB 的基础上提供 64TB的容量。 支持逻辑扇区大小为 4KB,和每块的大小为 256MB,来优化虚拟磁盘性能。 比VHD提供更高的安全性、可靠性和性能。 convert-VHD –path d:\Hyper-v...

Tensor丨思悟
20分钟前
0
0
30 岁转行做Python开发晚吗?而且是零基础

最近有小伙伴问小编,30 岁转行做Python开发晚吗? 小编想说,其实无论男女,只要想学,有这个动力,就直接去行动。无论年龄,无论性别,只要你想一直勇往直前,那么想做的就去做吧~这里有一...

糖宝lsh
30分钟前
7
0
详解Spring中的Profile

前言 由于在项目中使用Maven打包部署的时候,经常由于配置参数过多(比如Nginx服务器的信息、ZooKeeper的信息、数据库连接、Redis服务器地址等),导致实际现网的配置参数与测试服务器参数混淆...

watermelon11
45分钟前
4
0
phper必知必会(二)

  1.说说你对进程,线程以及协程的理解      进程:是系统进行资源分配和调度的基本单位,是基本操作系统结构的基础。进程是程序基本执行的实体。进程与进程之间是独立的,拥有完全独立...

SEOwhywhy
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部