iOS 圆角和阴影并存的方法

简介: 圆角和阴影无法共存的原因就是因为这句代码。

前提

圆角和阴影无法共存的原因就是因为这句代码。

Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw everything that is outside itself.

这句话的意思就是,圆角都是我给你割出来的,圆角外面的阴影自然也割掉了~ 所以,这么看来,圆角与阴影不能并存啊(仅限这种圆角实现的方式)

处理方式

  1. 在下面再加一个subView负责处理圆角,而父类view处理阴影 父类View:
NSInteger standard = 1;
    parentView.layer.cornerRadius = 10*standard;
    parentView.layer.shadowColor = [UIColor darkGrayColor].CGColor;
    // 设置阴影偏移量
    parentView.layer.shadowOffset = CGSizeMake(3*standard,3*standard);
    // 设置阴影透明度
    parentView.layer.shadowOpacity = 1;
    // 设置阴影半径
    parentView.layer.shadowRadius = 3* standard;
    parentView.layer.masksToBounds = NO;

subView:

NSInteger standard = 1;
    subView.layer.cornerRadius = 10*standard;
    subView.layer.masksToBounds = YES;

注意父类View的masksToBounds=NO cornerRadius等于subView的大小 suvBiew的masksToBounds=YES

  1. 添加一个上层Layer:
CALayer *subLayer=[CALayer layer]; 
CGRect fixframe = _tableView.frame; 
subLayer.frame= fixframe; 
subLayer.cornerRadius=8; 
subLayer.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:0.8].CGColor; 
subLayer.masksToBounds=NO; 
subLayer.shadowColor = [UIColor blackColor].CGColor;//shadowColor阴影颜色 
subLayer.shadowOffset = CGSizeMake(3,2);//shadowOffset阴影偏移,x向右偏移3,y向下偏移2,默认(0, -3),这个跟shadowRadius配合使用 
subLayer.shadowOpacity = 0.8;//阴影透明度,默认0 
subLayer.shadowRadius = 4;//阴影半径,默认3 
[self.bkgView.layer insertSublayer:subLayer below:_tableView.layer]; 
- (void)drawRect:(CGRect)rect {
    CGContextRef ref = UIGraphicsGetCurrentContext();
    CGContextMoveToPoint(ref, self.bounds.origin.x+10, 0); // 起点
    CGContextAddLineToPoint(ref, self.bounds.origin.x, 10); // 连线
    CGContextAddLineToPoint(ref, 20, 10); // 连线
    CGContextClosePath(ref); // 闭拢
    [THEME_COLOR setFill];// 背景填充颜色
    [THEME_COLOR setStroke]; // 连线颜色 即边框颜色
    CGContextDrawPath(ref, kCGPathFillStroke);
}

参考blog.csdn.net/feosun/arti…www.jianshu.com/p/0be78fc80…

目录
相关文章
|
5月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
160 0
|
5月前
|
安全 编译器 开发工具
​iOS安全加固方法及实现
​iOS安全加固方法及实现
58 0
​iOS安全加固方法及实现
|
5月前
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
5月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
87 0
|
10月前
|
iOS开发 开发者
📝 App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
在iOS应用程序开发过程中,进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹,帮助开发者更好地理解和应用该过程。
|
5月前
|
小程序 前端开发 Android开发
解决小程序中textarea ios端样式不兼容的两种方法
解决小程序中textarea ios端样式不兼容的两种方法
167 0
|
2月前
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
2月前
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
99 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
5月前
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
336 0
|
11月前
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
,在appuploder直接复制IOS信息;如果还没有创建证书,请上传正确的P12苹果证书后,系统会自动解析出对应的签名和公钥信息; ——APP备案的原理是基于原有的工信部域名备案系统,如果已经有了域名备案,无需新增备案主体;只需要在之前的域名备案系统里面,新增APP信息,收集的APP信息主要包括APP包名和签名及公钥这3项;——APP备案是属于行政常规主体信息预存,和域名一样,自行决定是否备案。目前国内安卓应用商店是全面要求APP备案的,如果没有APP备案是不能通过审核发布到各大应用商店。——如看了教程,还不清楚怎么获取APP包名、安卓签名、苹果sha1签名、公钥等信息,请联系我们在线客服,