Я работаю над своим представлением, и у меня возникла проблема с созданием тени вокруг кнопки в представлении стека. Большая часть работы, которую я сделал, была непосредственно в раскадровке.Получите первый UIButton в 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
, но я стараюсь быть более точным, чтобы оптимизировать производительность и предпочел бы добавить тени одним выстрелом.
Я понимаю, что тени - это удар по производительности, но они прекрасно подходят, чтобы намекнуть на то, что кнопка с тех пор, как мои ранние альфа-тестеры интерфейса не понимали, что некоторые из значков были кнопками. В этом случае это необходимое зло, я просто не пытаюсь его усугубить. Спасибо за ваш ответ, я дам этот снимок. –
Даже после рекурсии он все еще не работал как UIView, в котором находится кнопка, не конвертируется в стек. Вместо этого мне захотелось вырвать петлю в отдельный метод, и я взял ваш другой совет и просто сделал выход для кнопки. –
О, у вас есть кнопка в представлении внутри стека? Да, приведенный выше код не сработает для этого. – ColdLogic