我正在处理我的 View ,但在堆栈 View 中的按钮周围出现阴影时遇到了问题。我所做的大部分工作都直接在 Storyboard中。
这是我用来将阴影应用到 View 的方法
func addShadow(to view: UIView) {
view.layer.shadowColor = shadowColor
view.layer.shadowOpacity = shadowOpacity
view.layer.shadowOffset = shadowOffset
if let bounds = view.subviews.first?.bounds {
view.layer.shadowPath = UIBezierPath(rect: bounds).cgPath
}
view.layer.shouldRasterize = true
}
这就是我在 ViewController.swift
for subview in self.view.subviews {
if subview.isKind(of: UIButton.self) && subview.tag == 1 {
addShadow(to: subview)
}
}
我知道问题出在堆栈 View 和堆栈 View 内的 UIView 中,其中包含按钮。 (self.view > UIStackView > UIView > [UIButton, UILabel])
我知道我可以通过 for-loop
中的递归来做到这一点,但我试图更精确一点以优化性能,并且更愿意一次性添加阴影。
你有几个选择:
你是正确的,因为按钮是堆栈 View 上的一个 View ,所以你的 for 循环不会直接点击按钮来为其添加阴影。
到目前为止,解决这个问题的最简单方法是递归方式,或者类似的方式:
func addShadowsTo(subviews: [UIView]) {
for subview in subviews {
if subview.isKind(of: UIButton.self) && subview.tag == 1 {
addShadow(to: subview)
}
if let stackView = subview as? UIStackView {
addShadowToSubviews(subviews: stackView.subviews)
}
}
}
func viewDidload() {
super.viewDidLoad()
addShadowsTo(subviews: view.subviews)
}
如果您需要有关如何执行任何其他方式的说明,请发表评论。
关于ios - 获取 UIStackView 中的第一个 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948710/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |