我的應用程序允許用戶通過應用內購買來解鎖一堆關卡。爲了表明某個關卡已鎖定,我將圖標alpha更改爲0.7,以區別於他們擁有/可以訪問的關卡。重新加載或刷新UIView?
我的代碼工作通過檢查對viewDidLoad中一個BOOL的關鍵NSUserDefaults的:
所以他們成功購買後,這將是非常容易的,如果我能刷新/重載UIView的。有沒有辦法做到這一點?還是有替代方式,我可以實現這種影響?謝謝
我的應用程序允許用戶通過應用內購買來解鎖一堆關卡。爲了表明某個關卡已鎖定,我將圖標alpha更改爲0.7,以區別於他們擁有/可以訪問的關卡。重新加載或刷新UIView?
我的代碼工作通過檢查對viewDidLoad中一個BOOL的關鍵NSUserDefaults的:
所以他們成功購買後,這將是非常容易的,如果我能刷新/重載UIView的。有沒有辦法做到這一點?還是有替代方式,我可以實現這種影響?謝謝
我不認爲你應該調用[self viewDidLoad]。據我所知,這些是你在你的子類中實現的更多方法來回應各種事件,並且通常你不應該自己調用它們。希望更多看到的視圖文件,如果你想刷新東西,當一個視圖變得可見又把眼光投向實施
-(void)viewDidAppear:(BOOL)animated
我會把它放進-(void)viewWillAppear:(BOOL)animated
viewWillAppear中=「通知視圖控制器其視圖即將變得可見。「
我會檢查你的用戶默認值,if語句在那裏堅持一個:
- (void)viewWillAppear:(BOOL)animated
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:@"com.productbundle.unlock"] == YES) {
//set alpha to 1
};
[super viewWillAppear:animated];
}
使用setNeedsDisplay刷新一個UIView。
[yourUIView setNeedsDisplay];
我可以運行[self viewDidLoad]哪種工作,它正確地重繪元素,但舊的元素仍然出現在下面。所以我嘗試在運行viewDidLoad之前添加[self viewDidDisappear]和[self viewDidUnload],但它們不起作用。我也嘗試過[self setNeedsDisplay]但是不起作用。 – user339946 2012-02-16 05:44:37
不要這樣做。更改視圖的alpha不需要進一步的操作。如果一個視圖需要重繪,請發送'setNeedsDisplay'。 – Costique 2012-02-16 05:48:53