将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作
Posted
技术标签:
【中文标题】将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作【英文标题】:Adding UIView as a subview to a UIButton and bring it to front is not working properly 【发布时间】:2020-03-22 10:31:38 【问题描述】:我有一个 UIButton,背景颜色是白色的。
@IBOutlet weak var buttonNewPost: UIButton!
didSet
buttonNewPost.layer.borderColor = UIColor(red:0.88, green:0.88, blue:0.88, alpha:1.0).cgColor
buttonNewPost.layer.cornerRadius = 5
buttonNewPost.backgroundColor = .white
我想添加一个 UIView 来给这个圆形按钮添加阴影:
let buttonShadow = UIView()
buttonShadow.frame.size.width = buttonNewPost.layer.bounds.width
buttonShadow.frame.size.height = buttonNewPost.layer.bounds.height
buttonShadow.backgroundColor = .clear
buttonShadow.dropShadowEdged = true
buttonShadow.isUserInteractionEnabled = false
buttonNewPost.addSubview(buttonShadow)
buttonShadow.bringSubviewToFront(buttonNewPost)
结果是这样的:
为什么 UIButton 不是在前面,背景是白色的?当我将 UIButton 的背景颜色更改为蓝色时:
为什么会这样?我只想要一个带阴影的白色按钮
【问题讨论】:
这个怎么样:buttonNewPost.bringSubviewToFront(buttonShadow)
?
【参考方案1】:
你可以直接对 UIButton 应用阴影:-
@IBOutlet weak var Btn: UIButton!
didSet
Btn.layer.borderColor = UIColor(red:0.88, green:0.88, blue:0.88, alpha:1.0).cgColor
Btn.layer.cornerRadius = 5
Btn.backgroundColor = .white
将以下代码添加到 Viewdidload:-
Btn?.layer.borderColor = UIColor.black.cgColor
Btn?.layer.borderWidth = 1.0
Btn?.layer.cornerRadius = 20.0
Btn?.layer.shadowOpacity = 0.5
Btn?.layer.shadowColor = UIColor.red.cgColor
Btn?.layer.shadowRadius = 5.0
Btn?.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
After using this code you will get result like this
【讨论】:
以上是关于将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UITableView 作为子视图添加到 xib 中的 UIView?
关于如何将 UIview 作为子视图添加到 UITableCell 的问题
将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作