是否可以重新绘制整个视图。
我需要它来完成我的语言设置。问题在于,语言仅在绘制那里的观点后才发生变化。就像您走出设置然后再次进入一样,语言被更改。但是,当您保存一切时,语言保持不变。
找到语言更改之后,我应该如何重新绘制我的观点或最好的整个应用程序?
arc:
- (void)setLanguage:(LanguageType)languageType
{
_language = languageType;
//TODO:your settings
[_theWholeView setNeedsDisplay];
}
如果无法正常工作,则有一个非常麻烦的解决方案,它可以重新加载整个视图。
您可以这样代码:在视图中,您需要创建一个代表。@protocol thotleviewDelegate
- (void)reloadData;
@end
在View.m
中- (void)setLanguage:(LanguageType)languageType
{
_language = languageType;
//TODO:your settings
[_delegate reloadData];
}
在控制器中您需要实施委托在控制器中。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
}
是。致电[UIView setNeedsDisplay]
(参考)。
只需调用setneedsdisplay ..它将解决问题。setneedsdisplay实际上通过将视图框架作为矩形参数传递给Uiview类中的DrawRect函数。希望会有所帮助....