無限ループで、ラベルを 0.4 秒間表示してから 0.8 秒間非表示にしたい。
どうすればそれをやってのけることができますか?
私はNSTimerを使用すると言います。次の方法で実行できます。
あなたのラベルはmyLabel
次のとおりです。
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
によって呼び出されるメソッドを作成する必要がありますNSTimer
。
- (void)changeLabelState:(NSTimer *)timer
{
if(self.myLabel.hidden == TRUE)
{
self.myLabel.hidden = FALSE; //change comparassion to assing
[NSTimer scheduledTimerWithTimeInterval:0.4
target:self
selector:@selector(changeLabelState:)
userInfo:nil
repeats:NO];
}
else
{
self.myLabel.hidden = TRUE;
[NSTimer scheduledTimerWithTimeInterval:0.8
target:self
selector:@selector(changeLabelState:)
userInfo:nil
repeats:NO];
}
}
そしてNSTimer
、次のようにどこかを初期化します。
[NSTimer scheduledTimerWithTimeInterval:0.4
target:self
selector:@selector(changeLabelState:)
userInfo:nil
repeats:NO];
次のこともできることに注意してください。
[self performSelector:@selector(changeLabelState:) withObject:nil afterDelay:0.4];
- (void)changeLabelState:(NSTimer *)timer
{
if(self.myLabel.hidden == TRUE)
{
self.myLabel.hidden = FALSE;
[self performSelector:@selector(changeLabelState:) withObject:nil afterDelay:0.4];
}
else
{
self.myLabel.hidden = TRUE;
[self performSelector:@selector(changeLabelState:) withObject:nil afterDelay:0.8];
}
}
以下のようなもの。
viewDidLoadの場合:
NSTimer *silly = [NSTimer timerWithTimeInterval:0.4 target:self selector:@selector(question) userInfo:nil repeats:YES];
働き
-(void)question {
if(label.isHidden){
label.hidden = false;
} else {
label.hidden = true;
}
}
この関数のスコープでUILabelが定義されていて、機能することを確認してください。未テスト。