pvl*_*spk 20 core-graphics uiview ios quartz-core
- (void)drawRect:(CGRect)rect就足以设置[ _chartView setContentMode:UIViewContentModeRedraw]并且当设备改变它的定向时将调用此方法,并且可以为我的图表计算新的中心点.- (id)initWithFrame:(CGRect)frame,然后在视图控制器中添加它[self.view addSubview:chartView];.在这种情况下我如何处理轮换以重绘我的图表?Swi*_*ect 31
运用 setNeedsDisplay
drawRect在创建自定义视图时以编程方式调用应该足够了.它是IB中的单个标志,因此,0行代码首选方式.请参阅堆栈溢出如何在UIView子类上触发drawRect.
运用 layoutSubviews
如果必须触发重绘,请执行此操作UIView,然后再调用UIViewController.
无需收听通知也无需重构代码.
迅速
override func layoutSubviews() {
super.layoutSubviews()
self.setNeedsDisplay()
}
Run Code Online (Sandbox Code Playgroud)
Objective-C的
- (void)layoutSubviews {
[super layoutSubviews];
[self setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)
注:
setNeedsDisplay是一种drawRect方法,不是一个layoutSubviews方法.
Kee*_*nle 15
要在设备方向更改时正确呈现图表,您需要更新图表的布局,以下是您应添加到视图控制器的代码:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
_chartView.frame = self.view.bounds;
[_chartView strokeChart];
}
Run Code Online (Sandbox Code Playgroud)
用 .redraw
myView.contentMode = .redraw在创建自定义视图时以编程方式调用就足够了。它是IB 中的单个标志,因此,0 行代码首选方式。请参阅堆栈溢出如何在 UIView 子类上触发 drawRect。
| 归档时间: |
|
| 查看次数: |
24907 次 |
| 最近记录: |