-3

無限ループで、ラベルを 0.4 秒間表示してから 0.8 秒間非表示にしたい。

どうすればそれをやってのけることができますか?

4

3 に答える 3

2

NSTimerUIViews の隠しプロパティが 1 つの可能性です

于 2013-02-25T16:48:44.977 に答える
1

私は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];
    }
}
于 2013-02-25T17:07:35.617 に答える
0

以下のようなもの。

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が定義されていて、機能することを確認してください。未テスト。

于 2013-02-25T16:56:28.307 に答える