ビュー全体を再描画することは可能ですか。
言語設定を完了するために必要です。問題は、そこにあるビューが再び描画された後にのみ言語が変更されることです。設定から出て再び入ると、言語が変更されます。しかし、すべてを保存した瞬間、言語は同じままです。
では、言語の変更が見つかった後、どのようにビューを再描画するか、アプリ全体を再描画する必要がありますか?
ビュー全体を再描画することは可能ですか。
言語設定を完了するために必要です。問題は、そこにあるビューが再び描画された後にのみ言語が変更されることです。設定から出て再び入ると、言語が変更されます。しかし、すべてを保存した瞬間、言語は同じままです。
では、言語の変更が見つかった後、どのようにビューを再描画するか、アプリ全体を再描画する必要がありますか?
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 関数を実際に呼び出します。それが役立つことを願って....