a

Câu hỏi Làm thế nào để tạo ra UIColor tùy chỉnh của riêng tôi chứ không phải những cái được cài sẵn?


Tôi muốn tạo màu RGB riêng của mình UIColors và tôi có thể sử dụng như UIColor blackColor Hay bất cứ thứ gì khác.


35
2017-12-24 03:58


gốc




Các câu trả lời:


Bạn có thể viết phương thức của riêng bạn cho lớp UIColor bằng cách sử dụng các loại.

#import <UIKit/UIKit.h>
@interface UIColor(NewColor)
+(UIColor *)MyColor;
@end

#import "UIColor-NewColor.h"
@implementation UIColor(NewColor)
+(UIColor *)MyColor {
     return [UIColor colorWithRed:0.0-1.0 green:0.0-1.0 blue:0.0-1.0 alpha:1.0f];
}

Bằng cách này, bạn tạo ra một màu mới và bây giờ bạn có thể gọi nó như

[UIColor MyColor];

Bạn cũng có thể thực hiện phương thức này để lấy màu ngẫu nhiên. Hi vọng điêu nay co ich.


56
2017-12-25 21:16



Tôi đang sử dụng một giải pháp tương tự nhưng tôi phải gọi một cái gì đó như: [[UIColor alloc] MyColor] cho nó hoạt động. Có cách nào để không phải phân bổ nó không? - adjwilli
@adjwilli Đảm bảo bạn đang sử dụng + trước tuyên bố phương pháp, không phải -. Điều này sẽ làm cho nó một phương thức lớp so với một phương thức thể hiện. - Joe Masilotti


Tôi cần xác định một vài màu tùy chỉnh để sử dụng ở một số vị trí trong ứng dụng - nhưng màu sắc cụ thể cho ứng dụng đó. Tôi đã nghĩ đến việc sử dụng các danh mục, nhưng không muốn có các tệp phụ để bao gồm mọi thời gian. Do đó, tôi đã tạo ra một vài phương thức tĩnh trong ủy nhiệm ứng dụng của mình.

Trong MyAppDelegate.h

+ (UIColor*)myColor1;

Trong MyAppDelegate.m

+ (UIColor*)myColor1 {  
return [UIColor colorWithRed:26.0f/255.0f green:131.0f/255.0f blue:32.0f/255.0f alpha:1.0f];  
}

Tôi có một phương thức cho mỗi màu, hoặc bạn có thể làm một phương thức đơn và thêm một tham số.

Sau đó tôi có thể sử dụng nó ở bất cứ đâu trong ứng dụng như thế này:

myView.backgroundColor = [MyAppDelegate myColor1];

Tôi mong điều này giúp được người nào khác.


27
2018-01-28 07:46



Ứng cử viên muốn được tốt. Nhưng rồi họ học về mọi thứ. Họ học về những điều họ không biết. - griotspeak


[UIColor colorWithRed:51.0 / 255.0, green:0.0, blue:153.0 / 255.0];

Miễn là bạn sử dụng một giá trị dấu chấm động trong bộ phận của bạn, bạn không cần phải bỏ bất cứ thứ gì. Đảm bảo bạn sử dụng các giá trị dấu phẩy động. Ví dụ: 33 / 255 = 0. Mà sẽ trở thành màu đen.


8
2017-07-09 06:44





Swift 3

Tạo một phần mở rộng Swift cho phép bạn xác định các màu tùy chỉnh của riêng bạn và sử dụng chúng giống như các màu được tạo sẵn.

UIColor + CustomColor.swift

import UIKit

extension UIColor {

    class var customGreen: UIColor {
        let darkGreen = 0x008110
        return UIColor.rgb(fromHex: darkGreen)
    }

    class func rgb(fromHex: Int) -> UIColor {

        let red =   CGFloat((fromHex & 0xFF0000) >> 16) / 0xFF
        let green = CGFloat((fromHex & 0x00FF00) >> 8) / 0xFF
        let blue =  CGFloat(fromHex & 0x0000FF) / 0xFF
        let alpha = CGFloat(1.0)

        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
    }
}

Sử dụng:

view.backgroundColor = UIColor.customGreen

enter image description here


8
2017-10-11 10:51



Điều này cần phải ở đầu danh sách câu trả lời. - amallard


Có một vài cách để tạo màu.

Tôi thích sử dụng phương pháp RGB. Nếu bạn sử dụng các giá trị RGB, chia chúng cho 255 (Tôi không nhớ tại sao, nhưng tôi biết bạn cần phải làm điều đó).

float rd = 225.00/255.00;
float gr = 177.00/255.00;
float bl = 140.00/255.00;
[label setTextColor:[UIColor colorWithRed:rd green:gr blue:bl alpha:1.0]];

Hi vọng điêu nay co ich.....


7
2017-12-24 04:05



Các giá trị màu đỏ, xanh lục, xanh da trời và alpha được truyền cho hàm tạo cần phải nằm trong khoảng từ 0,0 đến 1,0. - gerry3


Đối với Swift:

let swiftColor = UIColor(red: 1, green: 165/255, blue: 233, alpha: 1)

3
2018-03-25 17:44





Sử dụng initWithRed: màu xanh lá cây: xanh dương: alpha: hoặc là colorWithRed: xanh lá cây: xanh dương: alpha:.

Ví dụ:

// create new autoreleased UIColor object named "myColor"
UIColor *myColor = [UIColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:1.0f];

// create new retained UIColor object named "myColor2"
UIColor *myColor2 = [[UIColor alloc] initWithRed:0.5f green:0.5f blue:0.5f alpha:1.0f];

2
2017-12-24 04:01



Nhưng điều đó có cho phép tôi nói điều gì đó như: UIColor * orangeColor = [UIColor alloc] initWithRed: greenLblue: alpha:]; và sau đó sử dụng nó sau này? - Jaba
Có, với cú pháp đúng. Tôi đã thêm các ví dụ mã. Đảm bảo quản lý bộ nhớ đúng cách: nếu bạn sử dụng hàm tạo thuận tiện của lớp, thì bạn cần giữ lại đối tượng màu hoặc đặt thuộc tính được giữ lại cho nó. - gerry3