2010-10-25 31 views
5

Tôi đang cố gắng animate backgroundColor thuộc tính của lớp UILabel và không thành công cho đến nay. Đây là đoạn mã của tôiĐiều gì thực sự khả thi trong UILabel?

-(void) blink { 
    UIColor* originalColor = lblDescription.backgroundColor; 
    lblDescription.backgroundColor = [UIColor yellowColor]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    lblDescription.backgroundColor = originalColor; 
    [UIView commitAnimations]; 
} 
//this code works if lblDescription is UIView and does not if UILabel 

Tôi không thể chứng minh được rằng một số thuộc tính UILabel không thể hoạt hình, nhưng tôi không thể chứng minh được khiếu nại đó bằng cách đọc tài liệu của Apple. Tôi đã tự hỏi nếu ai đó có thể làm sáng tỏ vấn đề này.

+1

Câu hỏi hay. Hầu hết thời gian tôi chỉ cố gắng để biết nếu nó là hoạt hình ... – gcamp

Trả lời

4

Trên this page from the View Programming Guide For iOS, "Bảng 1-2 Thuộc tính có thể hoạt hình" được cho là liệt kê tất cả các thuộc tính có thể hoạt hình của UIViews. Nó không bao gồm backgroundColor.

Nhưng trên UIView Lớp tham khảo, dưới sự sở hữu backgroundColor nó nói:

Thảo luận
thay đổi vào thuộc tính này có thể được hoạt hình. Giá trị mặc định là 0.

Vì vậy, không rõ tại sao BackgroundColor của UILabel không hoạt ảnh.

Cách khắc phục mà tôi đã sử dụng trong quá khứ là sử dụng CATextLayer thay vì UILabel.

+0

Sẽ không làm việc trong 3.1.3 – bioffe

+0

Hãy thử hai cách giải quyết khác trong [câu hỏi này] (http://stackoverflow.com/questions/2426614/how- to-animate-the-textcolor-thuộc tính-of-an-uilabel). Những người đó nên làm việc trong các phiên bản hệ điều hành trước đó. – Anna

+0

@aBitObvious CATextLayer không có phương tiện căn chỉnh theo chiều dọc (trong iOS) và hiển thị văn bản ở đầu bề mặt của nó (UILabel hiển thị ở giữa). Tôi đang từ bỏ: ( – bioffe

0

Nếu bạn muốn biến đổi màu của một nhãn (kể cả nền) bạn có thể làm một cái gì đó như thế này:

https://stackoverflow.com/a/20892927/189924

này không liên quan đến lớp hoặc sử dụng nhiều quan điểm.

Các vấn đề liên quan