是否可以重绘整个视图。
我需要它来完成我的语言设置。问题是语言只有在再次绘制视图后才会改变。就像您退出设置然后再次进入,然后更改语言。但是,当您保存所有内容时,语言保持不变。
那么,在发现语言更改后,我应该如何重绘我的视图,或者最好是整个应用程序?
是否可以重绘整个视图。
我需要它来完成我的语言设置。问题是语言只有在再次绘制视图后才会改变。就像您退出设置然后再次进入,然后更改语言。但是,当您保存所有内容时,语言保持不变。
那么,在发现语言更改后,我应该如何重绘我的视图,或者最好是整个应用程序?
在 ARC 中:
- (void)setLanguage:(LanguageType)languageType
{
_language = languageType;
//TODO:your settings
[_theWholeView setNeedsDisplay];
}
如果这样不行,有一个非常麻烦的解决方案,它可以重新加载整个视图。
您可以这样编写代码:在 view.h 中,您需要创建一个委托。@protocol WholeViewDelegate
- (void)reloadData;
@结尾
在视图中.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
}
是的。调用[UIView setNeedsDisplay]
(参考)。
只需调用 setNeedsDisplay.. 即可解决问题。setNeedsDisplay 实际调用 UIView 类中的 drawRect 函数,是通过将视图的边框作为矩形参数传入。希望有帮助....