是否可以重绘整个视图。
我需要它来完成我的语言设置。问题是语言只会在再次绘制的视图后发生变化。就像你没有设置然后再次进入,然后语言改变了。但是当你保存一切时,语言保持不变。
那么在发现语言变化后,我应该如何重绘我的观点,或者最好是整个应用程序?
答案 0 :(得分:11)
在ARC:
- (void)setLanguage:(LanguageType)languageType
{
_language = languageType;
//TODO:your settings
[_theWholeView setNeedsDisplay];
}
如果这不起作用,有一个非常麻烦的解决方案,它可以重新加载整个视图。
你可以像这样编码: 在view.h中,您需要创建一个委托。 @protocol WholeViewDelegate
- (void)reloadData;
@end
在view.m
中- (void)setLanguage:(LanguageType)languageType
{
_language = languageType;
//TODO:your settings
[_delegate reloadData];
}
在控制器中,您需要实现委托 在controller.m
中- (void)reloadData
{
if(_wholeView)
{
[_wholeView removeFromSuperview];
}
// in the wholeView init method you should refresh your data
_wholeView = [[WholeView alloc] init];
self.view addSubview:_wholeView
}
答案 1 :(得分:6)
是。致电[UIView setNeedsDisplay]
(reference)。
答案 2 :(得分:1)
只需调用setNeedsDisplay ..它将解决问题。 setNeedsDisplay实际上通过将视图的框架作为矩形参数传递来调用UIView类中的drawRect函数。希望有所帮助......