Я сделал рисунок с использованием CALayer на основе фрейма в моем подклассе UIView, мне нужно обновить строки, когда устройство вращается, но в traitCollectionDidChange, кадр все еще удерживает значение перед вращением. Есть ли способ получить обновленные значения кадра после вращения?Рамка UIView не обновляется во время traitCollectionDidChange
Мой рисунок кодов выглядит так, называемый в traitCollectionDidChange его Высказаться контроллер:
func setup() {
layer.sublayers?.removeAll()
let xAxisLine = UIBezierPath()
xAxisLine.move(to: CGPoint(x: 100, y: frame.height))
xAxisLine.addLine(to: CGPoint(x: bounds.width, y: frame.height))
let xAxisLayer = CAShapeLayer()
xAxisLayer.path = xAxisLine.cgPath
xAxisLayer.lineWidth = 2
xAxisLayer.fillColor = UIColor.clear.cgColor
xAxisLayer.strokeColor = UIColor.black.cgColor
layer.addSublayer(xAxisLayer)
}
Эта часть рисует X-ось моего пользовательского графика, но что еще важнее значения кадров является то, что раньше вращения таким образом, весь график неуместен и имеет размер.
От контроллера представления, я назвал его:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
barView.setup()
}
Пожалуйста, обновите вопрос с вашим 'реализации traitCollectionDidChange'. –
Я бы признался, что не должен использовать свои коды настройки для перерисовки, но в настоящее время я сосредоточен на получении новых значений фрейма для перерисовки –