2011-11-05 25 views
59

Tôi đang làm việc trên một ứng dụng iPhone sử dụng nhiều màu sắc khác nhau. Khi người dùng chọn nút màu cụ thể, tôi đặt màu vẽ tương ứng. Tôi nhận được màu sắc cho một số nhưng trong hầu hết các trường hợp tôi nhận được màu trắng.Cách khởi tạo UIColor từ các giá trị RGB đúng cách?

Đây là mã của tôi:

-(IBAction)colorSelected:(UIButton *)sender 
{ 

switch (sender.tag) 
{ 
    case 1: 
     self.drawcolor= [UIColor colorWithRed:200 green:191 blue:231 alpha:1]; 
     break;    
    case 2: 
     self.drawcolor= [UIColor colorWithRed:163 green:73 blue:164 alpha:1]; 
     break; 
    case 3: 
     self.drawcolor= [UIColor colorWithRed:112 green:146 blue:76 alpha:1]; 
     break; 
    case 4: 
     self.drawcolor= [UIColor colorWithRed:63 green:72 blue:204 alpha:1]; 
     break; 
    case 5: 
     self.drawcolor= [UIColor colorWithRed:153 green:217 blue:234 alpha:1]; 
     break; 
    case 6: 
     self.drawcolor= [UIColor colorWithRed:0 green:162 blue:232 alpha:1]; 
     break;   
    case 7: 
     self.drawcolor= [UIColor colorWithRed:181 green:230 blue:29 alpha:1]; 
     break; 
    case 8: 
     self.drawcolor= [UIColor colorWithRed:34 green:177 blue:76 alpha:1]; 
     break;   
    case 9: 
     self.drawcolor= [UIColor colorWithRed:239 green:228 blue:176 alpha:1]; 
     break;   
    case 10: 
     self.drawcolor= [UIColor colorWithRed:255 green:201 blue:0 alpha:1]; 
     break;   
    case 11: 
     self.drawcolor= [UIColor colorWithRed:255 green:201 blue:14 alpha:1]; 
     break;   
    case 12: 
     self.drawcolor= [UIColor colorWithRed:237 green:28 blue:36 alpha:1]; 
     break;   
    case 13: 
     self.drawcolor= [UIColor colorWithRed:255 green:127 blue:39 alpha:1]; 
     break;   
    case 14: 
     self.drawcolor= [UIColor colorWithRed:255 green:174 blue:201 alpha:1]; 
     break;   
    case 15: 
     self.drawcolor= [UIColor colorWithRed:185 green:122 blue:87 alpha:1]; 
     break;   
    case 16: 
     self.drawcolor= [UIColor colorWithRed:136 green:0 blue:21 alpha:1]; 
     break;   
    case 17: 
     self.drawcolor= [UIColor colorWithRed:195 green:195 blue:195 alpha:1]; 
     break;   
    case 18: 
     self.drawcolor= [UIColor colorWithRed:127 green:127 blue:127 alpha:1]; 
     break;   
    case 19: 
     self.drawcolor= [UIColor colorWithRed:255 green:255 blue:255 alpha:1]; 
     break; 
    case 20: 
     self.drawcolor= [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; 
     break; 
    default: 
     break; 
} 

self.preColor=self.drawcolor; 
self.lineWidth=self.prelineWidth; 
} 

Bất kỳ một thể cho tôi biết những gì tôi đang làm sai? Sumit

+1

tôi stumbled khi một tiện ích thoải mái http://colorcode.globalmaverick.com/ nó mang lại cho u Objecive-c và mã có thể sử dụng nhanh chóng trực tiếp từ mã HEX màu hoặc RGB. – amar

Trả lời

184

Các giá trị nằm trong phạm vi 0.0 đến 1.0.

Ví dụ: chia cho 255., nhưng hãy nhớ dấu chấm thập phân để bạn có được phân chia dấu phẩy động và không chia số nguyên.

Giống như

selectedColor = [UIColor colorWithRed:14.0/255.0 green:114.0/255.0 blue:199.0/255.0 alpha:1]; 
+19

Để mở rộng trên Mats câu trả lời, ở đây nó là với một ví dụ: tự.drawcolor = [UIColor colorWithRed: 14.0/255.0 màu xanh lá cây: 114.0/255.0 màu xanh dương: 199.0/255.0 alpha: 1]; – Flea

6

Bạn có một vài lựa chọn

CGFloat red = 16.0; 
CGFloat green = 97.0; 
CGFloat blue = 5.0; 
CGFloat alpha = 255.0; 
UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:(alpha/255.0)]; 

Màu chọn plugin cho Interface Builder

Có một n chọn màu băng từ Panic mà hoạt động tốt với IB: http://panic.com/~wade/picker/

Xcode Plugin

một này mang đến cho bạn một giao diện cho màu sắc lựa chọn: http://www.youtube.com/watch?v=eblRfDQM0Go

Pods và thư viện

Có một vỏ tốt đẹp có tên MPColorTools: https://github.com/marzapower/MPColorTools

10

Pr phương pháp tiếp cận có tính chất agmatic với Swift.

extension UIColor { 

    convenience init(rgbColorCodeRed red: Int, green: Int, blue: Int, alpha: CGFloat) { 

    let redPart: CGFloat = CGFloat(red)/255 
    let greenPart: CGFloat = CGFloat(green)/255 
    let bluePart: CGFloat = CGFloat(blue)/255 

    self.init(red: redPart, green: greenPart, blue: bluePart, alpha: alpha) 

    } 
} 
1

Đây là một phương pháp mà bạn có thể dễ dàng biến thành một loại trên UIColor mà sẽ cho phép bạn chỉ định một màu dựa trên giá trị RGBA từ 0 - 255.

+ (UIColor *)colorFromRGBAWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha { 
    return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha/255.0]; 
} 

Nếu bạn làm cho nó một loại mở rộng UIColor, bạn có thể sử dụng nó như vậy:

UIColor *myAwesomeColor = [UIColor colorFromRGBAWithRed:48 green:119 blue:167 alpha:255]; 
1

trong Swift bạn có thể dễ dàng thiết lập của bạn background-color ví dụ của một tế bào như thế này:

cell.backgroundColor = UIColor.init(red: 14.0/255.0, green: 114.0/255.0, blue: 199.0/255.0, alpha: 1)

:-)

0
(ContentView.Layer.BorderColor) //CG Object 
    = UIColor.LightGray.CGColor; 
+1

Vui lòng chỉnh sửa với nhiều thông tin hơn. Các câu trả lời chỉ có mã và "dùng thử" này không được khuyến khích, bởi vì chúng không chứa nội dung có thể tìm kiếm được và không giải thích tại sao một người nào đó nên "thử cái này". – abarisone

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