开发者

How do I make my own custom UIColor's other than the preset ones?

I want to make my own RGB colors that are UIColors and that I could use just like UIColor black开发者_如何转开发Color or any other.


You can write your own method for UIColor class using categories.

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

By this way, you create a new color and now you can call it like

[UIColor MyColor];

You can also implement this method to obtain random color. Hope this helps.


I needed to define a couple of custom colors for use in several places in an app - but the colours are specific to that app. I thought about using categories, but didn't want to have extra files to include every time. I've therefore created a couple of static methods in my App delegate.

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

I have a method per color, or you could do a single method and add a parameter.

I can then use it anywhere in the app like this:

myView.backgroundColor = [MyAppDelegate myColor1];

I hope this helps someone else.


Swift 3

Creating a Swift extension allows you to define your own custom colors and use them just like the built in colors.

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

Usage:

view.backgroundColor = UIColor.customGreen

How do I make my own custom UIColor's other than the preset ones?


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

As long as you use a floating point value in your division you don't have to cast anything. Make sure you use floating point values. For example: 33 / 255 = 0. Which will become black.


There are a couple of ways to create a color.

I prefer to use the RGB method. If you use the RGB values, divide them by 255 (I do not remember why, but I know you need to do it).

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

Hope this helps.....


For Swift:

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


Use initWithRed:green:blue:alpha: or colorWithRed:green:blue:alpha:.

For example:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜