gpt4 book ai didi

ios - UIView 框架在 traitCollectionDidChange 期间未更新

转载 作者:行者123 更新时间:2023-11-28 12:35:39 25 4
gpt4 key购买 nike

我基于我的 UIView 子类中的框架使用 CALayer 做了一些绘图,我需要在设备旋转时更新线,但在 traitCollectionDidChange 中,框架仍然保持旋转前的值。有没有办法在旋转后获取帧的更新值?

我的绘图代码看起来像这样,在它的 View Controller 的 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 轴,但更重要的是帧值是旋转之前的帧值,因此整个图形的位置和大小都不合适。

在 View Controller 中,我通过以下方式调用它:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {

super.traitCollectionDidChange(previousTraitCollection)

barView.setup()
}

最佳答案

您不会更新您的绘图,您总是在方向改变时向您的 View 添加一个新层。

您应该在 viewDidLoad 中创建层并保存对它的引用。在 traitCollectionDidChange 中,您只需为图层分配一个新路径。

关于ios - UIView 框架在 traitCollectionDidChange 期间未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com