iOS - UITableview 阴影圆角共存
前言
给 UITableView
同时设置圆角和阴影时发现在视图上只会显示圆角,原因是因为当我们设置 masksToBounds
为 YES
允许圆角剪裁时,圆角以外的阴影也会一并被剪裁掉。在网上找了一下解决方法,ios阴影圆角共存 这篇文章提供了一个思路,就是把圆角和阴影放在不同的两个控件上实现,然后叠加到一块。基本思路是正确的,但实际操作发现在最后插入作为阴影层的 CALayer
,调用的方法可能会照成层级有点混乱的问题。下面展示一下我解决这个问题的方法和用 Swift 实现的代码。
实现
上图,阴影设置的有点浅:
上代码:
1 | self.view_navigation.frame = CGRectMake(x: 61, y: 15, width: 261, height: CGFloat(50 * (model.navigaArr.count < 5 ? model.navigaArr.count : 5))) |
-
2020-09-12
注意到工程里面关于权限请求这块的逻辑没有很好地管理起来,一些是用 OC 的工具类,一些是用 Swift 代码在一些
ViewController
里面单独调用,不能复用,就想封装一个 Swift 版关于权限请求的工具类,虽然这个需求在 GitHub 上搜索也有很多现成的轮子,但使用起来感觉太重,而且有些久不维护,Swift 版本更新的又快,有些接口就不好使了,索性就自己封装一个。一开始的思路也是想通过枚举来创建不同权限字段,通过静态方法来实现请求,但是蓝牙权限和定位权限需要实例化对象,设置代理。当使用
static
关键字来创建蓝牙和定位对象,当应用内有其他的业务也要使用蓝牙和定位对象时,代理响应就会有点问题。后面索性就用单例方法创建一个整体的权限管理对象,然后创建类方法,在类方法中自己调用自己。 -
2020-09-06
-
2020-04-24
最近在优化一个项目的过程,过程中发现之前开发时由于刚接触
Swift
的原因,在Swift
中的类里使用了很多OC
的写法,比如字典数组对象会习惯性用NSDictionary
、NSArray
来初始化,而不是用[KeyType: ValueType]()
或是[SomeType]()
这种类型来实例化变量。虽然在使用上没有什么问题,但看起来多少有点。。。不优雅。
当我把大部分类型都修改成Swift
中的写法后(部分未修改是因为使用String
类型来给文本做截取和富文本定义,实在不如NSString
顺手,这种不顺手让我不由想起 Stack Overflow 上看到的一个评论:I thougt i already getting along well with Swift.)发现,原来一些变量是否为空的判断中,使用Swift
里的optional
类型会方便很多。
比如解析一个 json 数据,如果层级多而且里面每个元素都是不确定的,那么可能就需要每个层级都判一次空。而如果使用 ? 来设置当前对象为可选值,只需要在最后一层实际使用到对象值时,判一次空就 OK 了。
对于 ? 和 ! 的区别和总结,网上有很多文章,在这里就不重复造轮子了。下面就对这个optional
的自己两个疑问做个记录。? 和 ! 是表示两种不同的类型吗,一种是可以为空,一种不可以为空?