[英]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.