此代码使用EasyPeasy库创建我的自定义视图
override func viewDidLoad() {
super.viewDidLoad()
chart = Init( ChartView(frame: .zero, with: calc)) {) {
$0.translatesAutoresizingMaskIntoConstraints = false
}
view.addSubview(chart)
chart <- [
Top(0).to(self.topLayoutGuide),
Bottom(0),
Left(0),
Right(0)
]
chart.layoutIfNeeded()
}
但是,如果我旋转设备,则不会重新加载自定义视图:只是缩放比例不正确(例如,圆圈变成了椭圆形)。但是,如果我使用
chart.layoutIfNeeded()
手动重绘,效果很好。有什么办法说:“亲爱的设备,每当我更改框架/旋转视图时,重新绘制自定义视图”?
附言EasyPeasy使用
NSLayoutConstraint
。https://github.com/nakiostudio/EasyPeasy
最佳答案
我发现这解决了我的问题:
chart = Init( ChartView(frame: .zero, with: calc)) {
$0.translatesAutoresizingMaskIntoConstraints = false
$0.contentMode = .redraw
}
我的意思是视图需要此方法:
setNeedsDisplay()
。要由OS自动执行此操作,需要设置chart.contentMode = .redraw
。关于ios - 如果设备旋转,则EasyPeasy(NSLayoutConstraint)不会更改自定义 View 框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39958999/