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 次 |
最近记录: |