есть такой код:
let imgNormalTop = UIImage(size: CGSize.init(width: self.frame.size.width, height: self.frame.size.height), gradientPoints: pointsNormalTop)
self.button.setup(normalImage: imgNormalTop!, highlightImage: imgPressedTop!, leftImage: nil, cornerRadius: 13.0, fontSize: 12)
Про force unwrapping в курсе, и собственно он и мешает жить, но это легаси код и пока не дошли руки его привести в порядок, да и идей пока нет, как в данной ситуации избавиться от него.
Собственно, в случаях, когда размеры кнопки заранее не известны, возникает стандартный "Unexpectedly found nil while unwrapping an Optional value"
Пытаюсь бороться следующим образом:
При передаче значений, которые могут повлиять на размер кнопки, организую dispatchGroup.
В котором сначала в главном потоке добавляю кнопку в нужное вью, настраиваю констрейнты.
По окончании dispatchGroup.leave()
И уже после этого:
dispatchGroup.wait()
DispatchQueue.main.async {
//вызов настройки кнопки, в которой присутствует самый верхний код с force unwrapping
}
Предполагал, что к этому моменту сама кнопка уже создана, размещена в лейауте, её размеры self.frame.size.width/self.frame.size.height уже известны, поэтому проблем не будет. Однако ошибка с "Unexpectedly found nil" всё также продолжает появляться.
Может есть идеи, как с этим разобраться?
В setBounds: апдейть градиент и все
Извини, а какой setBounds? Единственный, который выдаётся гуглом: https://developer.apple.com/documentation/pdfkit/pdfpage/1503460-setbounds относится к PDFKit
У кнопки есть bounds в set делаешь апдейт градиента по размеру bounds
боюсь что не сильно поможет. К моменту вызова set, получается, что размеры кнопки нулевые, что приводит к nil в значении imgNormalTop.
Обсуждают сегодня