ios - 这里的角落正在工作,但阴影在 iOS 9 和 10 中不起作用
问题描述
这里的角落正在工作,但阴影在 iOS 9 和 10 中不起作用
和 iOS 11 都运行良好
viewBlueMe.chatCellDesign([.topLeft,.bottomLeft,.topRight], [.layerMinXMinYCorner,.layerMinXMaxYCorner,.layerMaxXMinYCorner], radius: 5)
扩展名:
extension UIView {
func chatCellDesign(_ corners:UIRectCorner,_ cormerMask:CACornerMask, radius: CGFloat) {
if #available(iOS 11.0, *){
self.clipsToBounds = false
self.layer.cornerRadius = radius
self.layer.maskedCorners = cormerMask
self.layer.shadowColor = UIColor.gray.cgColor
self.layer.shadowOpacity = 1
self.layer.shadowOffset = CGSize.zero
self.layer.shadowRadius = 5
}else{
let rectShape = CAShapeLayer()
rectShape.bounds = self.frame
rectShape.position = self.center
rectShape.path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)).cgPath
self.layer.mask = rectShape
// FIXME: THIS CODE IS NOT WORK
self.layer.shadowColor = UIColor.gray.cgColor
self.layer.shadowOpacity = 1
self.layer.shadowOffset = CGSize.zero
self.layer.shadowRadius = 5
}
}
}
我在 iOS 9 和 10 中需要这种类型的输出,这也是 iOS11
解决方案
创建一个outerview
并将你的UILabel
放在里面,请在下面找到详细信息,
outerView.layer.cornerRadius = 5.0
outerView.layer.shadowColor = UIColor.black.cgColor
outerView.layer.shadowOffset = CGSize.zero
outerView.layer.shadowOpacity = 0.2
outerView.layer.shadowRadius = 5.0
更新
见下图,
这是IBOutlets
@IBOutlet weak var tmpView: UIView!
@IBOutlet weak var innerView: UIView!
你可以这样做,
innerView.roundCorners([.topLeft, .topRight, .bottomLeft], radius: 5)
tmpView.layer.shadowColor = UIColor.black.cgColor
tmpView.layer.shadowOffset = CGSize.zero
tmpView.layer.shadowOpacity = 0.2
tmpView.layer.shadowRadius = 10.0
在这里找到 UIView 扩展,
extension UIView {
func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
}
这将为您提供以下输出,
供参考。玩弄阴影属性以获得您想要的精确输出。
推荐阅读
- python - cross_val_score 和 gridsearchCV 是如何工作的?
- javascript - 如何让 Materialize 可扩展以在选项卡中工作?
- javascript - 我需要将键值对的对象转换为单独的列表项
- jenkins - 在我的 Jenkins 声明式管道中的多个代理上运行相同的任务
- javascript - 我用 GIMP 和 mtPaint 调整了大小,它不起作用。当我把它放幻灯片时,图像大小不会改变
- php - PHP服务器向swift客户端发送json响应显示此错误
- c# - 在 xamarin.forms 中创建和覆盖图像
- php - 在 PHP 中使用简单的依赖注入
- c - 用花括号定义
- javascript - 使用 Contact Form 7 Wordpress 插件中的 javascript 在提交时将隐藏字段的值更改为复选框的值