2011-05-03 93 views
0

是否有可能使可可觸摸閃爍的UILabel或是否需要與核心動畫爲一個的UIView?閃爍的UILabel可可觸摸

+0

**警告!**閃爍的用戶界面元素可以引發癲癇發作,如果它們閃爍在某些頻率。實施這樣的動畫時要小心。 – 2011-05-03 21:32:24

回答

0

爲了好玩,我決定寫這個子類的NSOperation。從BlinkingLabelOperation.m

- (void)main { 
    SEL update = @selector(updateLabel); 
    [self setThreadPriority:0.0]; 

    while (![self isCancelled]) { 
     if (label_ == nil) 
      break; 

     [NSThread sleepForTimeInterval:interval_]; 
     [self performSelectorOnMainThread:update withObject:nil waitUntilDone:YES]; 
    } 
} 

- (void)updateLabel { 
    BlinkingColors *currentColors = nil; 

    if (mode_) 
     currentColors = blinkColors_; 
    else 
     currentColors = normalColors_; 

    [label_ setTextColor:currentColors.textColor]; 
    [label_ setBackgroundColor:currentColors.backgroundColor]; 

    mode_ = !mode_; 
} 

樣品視圖控制器代碼

摘錄:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    BlinkingColors *blinkColors = [[BlinkingColors alloc] initWithBackgroundColor:[UIColor whiteColor] 
                     textColor:[UIColor redColor]]; 

    BlinkingLabelOperation *blinkingOp = [[BlinkingLabelOperation alloc] initWithLabel:clickLabel freq:1.0 blinkColors:blinkColors]; 

    // put the operation on a background thread 
    NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease]; 
    [queue addOperation:blinkingOp]; 

    [blinkColors release]; 
} 

完整的列表,你會發現它here。請留下評論,讓我知道你的想法。

+0

嗨黑色青蛙,非常感謝您的回答和您的代碼!非常好,易於實施,效果很好,正是我所期待的。兩個大拇指:-) – Winston 2011-05-04 19:30:57

1

所有UIViews(包括的UILabel)具有hidden屬性,你可以打開和關閉,以使其「閃爍」。

+0

馬丁,謝謝你指出。在這一點上,只有一個UILabel適合我的需求。 – Winston 2011-05-04 19:33:40

+0

UILabel是一個UIView。 – 2011-05-04 21:57:48