嗨,Stackoverflow的家伙们!
我需要你的帮助。我正在寻找一种方法,在应用程序启动并“保存”UIView的颜色状态后,只调用一次。首先,我将向您展示我的代码,我可以更好地解释它:
- (void)viewWillAppear:(BOOL)动画{
NSArray *colors = [NSArray arrayWithObjects:[UIColor myWhiteColor],[UIColor myBlueColor],[UIColor myCyanColor],[UIColor myGreenColor],[UIColor myOrangeColor],[UIColor myPurpleColor],[UIColor myRedColor],[UIColor myViolettColor],[UIColor myYellowColor], nil]; NSInteger randomIndex = random() % [colors count]; colorTransparentView.backgroundColor = [colors objectAtIndex:randomIndex]; colorTransparentView.opaque = NO; colorTransparentView.alpha = 1.0;
}
现在我向你解释我的问题。 如您所见,每次调用“viewWillAppear”方法时,上面的代码都会更改UIView的颜色。代码随机地将与IBOulet链接的UIView(在.xib中)的颜色更改为头文件。问题是,每次回到视图时,我都会得到不同的颜色。
但是,我只想在应用程序启动后设置UIView
的随机颜色。此颜色应保持,直到应用程序从多任务处理关闭。我看不出任何解决方法。我试图用applicationDidFinishedLaunchingWithOptions
方法调用代码,但我并不熟练。
此外,我尝试使用dispatch_once
方法只调用一次,但是您可能会想到颜色从未再次调用过,因此第二次加载时视图没有颜色。
如果你能帮我解决这个问题,我真的很感激。
先谢谢,
诺亚
修改
我的标题:
@interface ViewController : UIViewController {
IBOutlet UIView *colorTransparentView;
}
@end
答案 0 :(得分:3)
使用静态变量怎么样?用0初始化它,并在您的视图中更改颜色后将出现。将其设置为1并继续检查。
int static colortaken = 0;
int static colorindex;
- (void)viewWillAppear:(BOOL)animated
{
NSArray *colors = [NSArray arrayWithObjects:[UIColor myWhiteColor],[UIColor myBlueColor],[UIColor myCyanColor],[UIColor myGreenColor],[UIColor myOrangeColor],[UIColor myPurpleColor],[UIColor myRedColor],[UIColor myViolettColor],[UIColor myYellowColor], nil];
if (colortaken == 0)
{
NSInteger randomIndex = random() % [colors count];
colorindex = randomIndex;
colorTransparentView.backgroundColor = [colors objectAtIndex:randomIndex];
colorTransparentView.opaque = NO;
colorTransparentView.alpha = 1.0;
}
else
{
// do nothin
colorTransparentView.backgroundColor = [colors objectAtIndex:colorindex];
colorTransparentView.opaque = NO;
colorTransparentView.alpha = 1.0;
}
// at end
colortaken = 1;
}
答案 1 :(得分:0)
使用dispatch_once。您可以阅读一般的单例方法,但这是推荐的方法。