是否可以重繪整個視圖。在ios中重繪視圖
我需要它來完成我的語言設置。問題在於語言只有在再次繪製視圖後纔會改變。就像你退出設置然後再次進入,那麼語言就會改變。但是,當你保存所有內容時,語言保持不變。
那麼我應該如何重新繪製我的視圖,或通過最好的整個應用程序,發現語言改變後?
是否可以重繪整個視圖。在ios中重繪視圖
我需要它來完成我的語言設置。問題在於語言只有在再次繪製視圖後纔會改變。就像你退出設置然後再次進入,那麼語言就會改變。但是,當你保存所有內容時,語言保持不變。
那麼我應該如何重新繪製我的視圖,或通過最好的整個應用程序,發現語言改變後?
在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
}
只需調用setNeedsDisplay ..它將解決問題。 setNeedsDisplay實際上通過傳遞視圖的框架作爲矩形參數來調用UIView類中的drawRect函數。希望有所幫助....
in your viewController [self.view setNeedsDisplay:YES]; –
只是好奇 - 爲什麼你不使用iOS的標準「自動」語言選擇?就個人而言,我認爲iOS應用程序中的語言選擇是一種痛苦,通常是「我不在乎」編程風格的明確標誌。 – Eiko
什麼是標準的「自動」語言選擇。我已經根據互聯網上的一個例子實施了我的語言選擇。 – Datenshi