2012-11-04 21 views
39

Tôi muốn sử dụng NSAttributedString trong dự án của mình, nhưng khi tôi cố gắng đặt màu, không phải từ bộ tiêu chuẩn (redColor, blackColor, greenColor v.v.) UILabel hiển thị các chữ cái này bằng màu trắng. Đây là dòng mã của tôi.Làm cách nào để tạo UIColor từ RGBA?

[attributedString addAttribute:NSForegroundColorAttributeName 
         value:[UIColor colorWithRed:66 
               green:79 
               blue:91 
               alpha:1] 
         range:NSMakeRange(0, attributedString.length)]; 

Tôi đã cố gắng tạo màu với CIColor từ khung Hình ảnh cốt lõi, nhưng nó cho thấy cùng một kết quả. Tôi nên thay đổi gì trong mã của mình để thực hiện đúng cách?

Thx cho câu trả lời, các bạn!

Trả lời

95

Giá trị của bạn không chính xác, bạn cần chia mỗi giá trị màu cho 255,0.

[UIColor colorWithRed:66.0f/255.0f 
       green:79.0f/255.0f 
       blue:91.0f/255.0f 
       alpha:1.0f]; 

Các tài liệu nhà nước:

+ (UIColor *)colorWithRed:(CGFloat)red 
        green:(CGFloat)green 
        blue:(CGFloat)blue 
        alpha:(CGFloat)alpha 

thông số

đỏ Thành phần đỏ của đối tượng màu sắc, quy định như một giá trị 0,0-1,0.

màu xanh lá cây Thành phần màu xanh lá cây của đối tượng màu, được chỉ định làm giá trị từ 0,0 đến 1,0.

màu xanh Thành phần màu xanh của đối tượng màu, được chỉ định làm giá trị từ 0,0 đến 1,0.

alpha Giá trị độ mờ của đối tượng màu, được chỉ định làm giá trị từ 0,0 đến 1,0.

Reference here.

+1

Nó hoạt động tốt, bây giờ tôi cảm thấy như thằng ngốc sau sai lầm như vậy! Cảm ơn bạn! – x401om

5

UIColor sử dụng một loạt 0-1,0, không số nguyên đến 255 .. Hãy thử điều này:

// create color 
UIColor *color = [UIColor colorWithRed:66/255.0 
           green:79/255.0 
            blue:91/255.0 
           alpha:1]; 

// use in attributed string 
[attributedString addAttribute:NSForegroundColorAttributeName 
         value:color 
         range:NSMakeRange(0, attributedString.length)]; 
+0

Tại sao nó theo cách này ?! –

3

Vui lòng thử mã

[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)]; 

như

Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0]; 

Các thành phần RGB của UIColor được chia tỷ lệ từ 0 đến 1, không lên tới 255.

24

Một trong những macro ưa thích của tôi, không có dự án mà không:

#define RGB(r, g, b) [UIColor colorWithRed:(float)r/255.0 green:(float)g/255.0 blue:(float)b/255.0 alpha:1.0] 
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r/255.0 green:(float)g/255.0 blue:(float)b/255.0 alpha:a] 

Sử dụng như:

[attributedString addAttribute:NSForegroundColorAttributeName 
         value:RGB(66, 79, 91) 
         range:NSMakeRange(0, attributedString.length)]; 
+0

cho nhanh chóng xin vui lòng? –

+1

Xin chào @JaswanthKumar kiểm tra câu trả lời của tôi cho phiên bản 'Swift'. –

2

Kể từ @Jaswanth Kumar hỏi, đây là phiên bản Swift từ LSwift:

extension UIColor { convenience init(rgb:UInt, alpha:CGFloat = 1.0) { self.init( red: CGFloat((rgb & 0xFF0000) >> 16)/255.0, green: CGFloat((rgb & 0x00FF00) >> 8)/255.0, blue: CGFloat(rgb & 0x0000FF)/255.0, alpha: CGFloat(alpha) ) } }

Cách sử dụng : let color = UIColor(rgb: 0x112233)

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