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
[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];
精彩评论