Как мне сделать свой собственный UIColor, кроме предустановленных? - PullRequest
36 голосов
/ 24 декабря 2009

Я хочу сделать свои собственные цвета RGB UIColors и использовать их так же, как UIColor blackColor или любой другой.

Ответы [ 7 ]

56 голосов
/ 26 декабря 2009

Вы можете написать свой собственный метод для класса UIColor, используя категории.

#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];
}

Таким образом, вы создаете новый цвет, и теперь вы можете называть его как

[UIColor MyColor];

Вы также можете реализовать этот метод для получения случайного цвета. Надеюсь, это поможет.

27 голосов
/ 28 января 2010

Мне нужно было определить пару пользовательских цветов для использования в нескольких местах в приложении - но цвета специфичны для этого приложения. Я думал об использовании категорий, но не хотел, чтобы дополнительные файлы включались каждый раз. Поэтому я создал несколько статических методов в моем делегате приложения.

В MyAppDelegate.h

+ (UIColor*)myColor1;

In MyAppDelegate.m

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

У меня есть метод для каждого цвета, или вы можете сделать один метод и добавить параметр.

Затем я могу использовать его в любом месте приложения следующим образом:

myView.backgroundColor = [MyAppDelegate myColor1];

Надеюсь, это поможет кому-то еще.

9 голосов
/ 11 октября 2016

Swift 3

Создание расширения Swift позволяет вам определять свои собственные цвета и использовать их так же, как встроенные цвета.

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)
    }
}

Использование:

view.backgroundColor = UIColor.customGreen

enter image description here

8 голосов
/ 09 июля 2012
[UIColor colorWithRed:51.0 / 255.0, green:0.0, blue:153.0 / 255.0];

Пока вы используете значение с плавающей запятой в своем подразделении, вам не нужно ничего разыгрывать. Убедитесь, что вы используете значения с плавающей запятой. Например: 33 / 255 = 0. Который станет черным.

7 голосов
/ 24 декабря 2009

Есть несколько способов создать цвет.

Я предпочитаю использовать метод RGB. Если вы используете значения RGB, разделите их на 255 (я не помню почему, но я знаю, что вам нужно это сделать).

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]];

Надеюсь, это поможет .....

3 голосов
/ 25 марта 2015

Для Свифта:

let swiftColor = UIColor(red: 1, green: 165/255, blue: 233, alpha: 1)
2 голосов
/ 24 декабря 2009

Использование initWithRed: зеленый: синий: альфа: или colorWithRed: зеленый: синий: альфа: .

Например:

// 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];
...