2013-02-25 5 views
-3

Я хочу, чтобы метка отображалась в течение 0,4 секунды, а затем скрывалась на 0,8 секунды - в бесконечном цикле.Как создать мигающую метку

Как я могу снять это?

+5

(http://whathaveyoutried.com) –

+1

Noooooooo !!!!!!! !!!!

ответ

2

NSTimer и UIView сек hidden собственность была бы одна возможность

+0

Ваш ответ хороший, пожалуйста, предоставьте несколько кодов для поддержки этих ключевых слов и классов. –

+5

хорошие вопросы -> хорошие ответы | ленивые письменные вопросы -> более общие, менее устрашающие ответы – blub

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, определенный в рамках этой функции и она должна работать. UNTESTED.

+1

, если вы хотите разные интервалы времени, вы можете рассмотреть возможность передачи 'repeat: NO' и создания новых таймеров внутри этого метода' question' (если скрыто -> 0,4 ​​секунды, если нет - > 0,8 секунды) – blub

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]; 
    } 
} 
Смежные вопросы