[英]Get the first UIButton in a UIStackView
我正在处理我的视图,但在堆栈视图中的按钮周围出现阴影时遇到问题。 我所做的大部分工作都直接在情节提要中进行。
这是我用来将阴影应用于视图的方法
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)
}
}
我知道问题源于堆栈视图和包含按钮的堆栈视图内部的UIView。 (self.view> UIStackView> UIView> [UIButton,UILabel])
我知道我可以在for-loop
使用递归来做到这一点,但我正在尝试更加精确地优化性能,并且希望一次添加阴影。
您有几种选择:
您是正确的,因为该按钮是堆栈视图上的一个视图,因此您的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)
}
如果您想获得有关其他方法的一些说明,只需评论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.