Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the iOS equivalent of Android's colors.xml

Tags:

In android there is an XML file as res/values/colors.xml that lets you organize all of your colors used in your app. Like this:

<?xml version="1.0" encoding="utf-8"?> <resources>   <color name="red">#e60012</color>   <color name="blue">#33b5e5</color>   ... </resources> 

Is there something like this in iOS? If not, what is the best way to organize colors that are used throughout the app?

I would like to ultimately be able to replace things like [UIColor greenColor] with [MyColor greenColor].

like image 911
clocksmith Avatar asked Aug 07 '14 16:08

clocksmith


People also ask

Is XML used in iOS?

Like Android XML, iOS also used XML file for Designing the UI part call Storyboard or nib file.

What is XML color?

A color value defined in XML. The color is specified with an RGB value and alpha channel. You can use a color resource any place that accepts a hexadecimal color value. You can also use a color resource when a drawable resource is expected in XML (for example, android:drawable="@color/green" ).


2 Answers

Better later than never...

For Swift:

Create a new class: MyColors.swift that is an extension of UIColor class:

extension UIColor{      static func color1() -> UIColor{          return Utils.UIColorFromRGB(0x333333)     }      static func color2() -> UIColor{          return Utils.UIColorFromRGB(0xffffff)     } } 

Having in another class (maybe Utils.swift) this func:

class func UIColorFromRGB(rgbValue: UInt) -> UIColor {     return UIColor(         red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,         green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,         blue: CGFloat(rgbValue & 0x0000FF) / 255.0,         alpha: CGFloat(1.0)     ) } 

You can use it like this (note the brackets after UIColor):

tableView.backgroundColor = UIColor.color1() 

Edit: Changed the functions to static so that the colors can be used like the normal iOS colors without creating an instance of UIColor.

like image 59
Luismi Avatar answered Sep 24 '22 20:09

Luismi


I have not come across a default file like this. You could create your own custom .plist file which holds the values and you load that when the app starts. Another option is to create a Category for UIColor which has a bunch of class methods returning the colors you want.

You could create something that looks like this:

UIColor+CustomColors.h:

@interface UIColor (CustomColors)      + (UIColor *)customColor1;     + (UIColor *)customColor2;     ...  @end 

UIColor+CustomColors.m:

#import "UIColor+CustomColors.h"  @implementation UIColor (CustomColors)      + (UIColor *)customColor1 {         return [UIColor colorWithRed:1.0f green:0.5f blue:0.5f alpha:1.0f];     }     + (UIColor *)customColor2 {         return [UIColor colorWithRed:1.0f green:0.5f blue:1.0f alpha:1.0f];     }     ...  @end 

Then where you set the background you could have something like this:

ViewController.m:

#import "UIColor+CustomColors.h"  ...  view.backgroundColor = [UIColor customColor1]; 
like image 25
carloabelli Avatar answered Sep 22 '22 20:09

carloabelli