2009-12-24 11 views

Respuesta

56

Usted puede escribir su propio método para la clase UIColor utilizando categorías.

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

De esta manera, se crea un nuevo color y ahora se le puede llamar como

[UIColor MyColor]; 

También puede aplicar este método para obtener color al azar. Espero que esto ayude.

+0

Estoy usando una solución similar pero tengo que llamar algo así como: [[UIColor alloc] MyColor] para que funcione. ¿Hay alguna manera de no tener que asignarlo? – adjwilli

+1

@adjwilli Asegúrese de estar utilizando un '+' delante de la declaración del método, no un '-'. Esto lo convertirá en un método de clase frente a un método de instancia. –

2

Utilice initWithRed:green:blue:alpha: o colorWithRed:green:blue:alpha:.

Por ejemplo:

// 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

Pero habría que permitir que diga algo como: UIColor * orangeColor = [alloc UIColor] initWithRed: greenLblue: alpha:] ; y luego úselo más tarde? – Jaba

+0

Sí, con la sintaxis correcta. Agregué ejemplos de código. Asegúrese de administrar adecuadamente la memoria: si utiliza el constructor de conveniencia de clase, entonces necesita retener el objeto de color o establecer una propiedad retenida en él. – gerry3

7

Hay un par de maneras de crear un color.

Prefiero usar el método RGB. Si usa los valores RGB, divídalos por 255 (no recuerdo por qué, pero sé que debe hacerlo).

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

Espero que esto ayude .....

+2

Los valores rojo, verde, azul y alfa que se pasan al constructor deben estar entre 0.0 y 1.0. – gerry3

27

Necesitaba definir un par de colores personalizados para usar en varios lugares de una aplicación, pero los colores son específicos de esa aplicación. Pensé en usar categorías, pero no quería tener archivos adicionales para incluir cada vez. Por lo tanto, he creado un par de métodos estáticos en mi delegado de la aplicación.

En MyAppDelegate.h

+ (UIColor*)myColor1; 

En MyAppDelegate.m

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

que tienen un método por el color, o usted podría hacer un solo método y añadir un parámetro.

puedo luego usarlo en cualquier lugar de la aplicación de la siguiente manera:

myView.backgroundColor = [MyAppDelegate myColor1]; 

espero que esto ayude a alguien más.

+6

Los delegados de la aplicación quieren ser buenos. Pero luego aprenden sobre cosas. Aprenden sobre cosas que no les incumben saber. – griotspeak

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

Mientras se utiliza un valor de punto flotante en su división que no tienen nada para echar. Asegúrese de usar valores de coma flotante. Por ejemplo: 33/255 = 0. Que se volverá negro

3

para SWIFT:

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

Swift 3

Crear una extensión Swift le permite definir sus propios colores personalizados y utilizarlos como el construido en colores.

UIColor + CustomColor.rápida

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

Uso:

view.backgroundColor = UIColor.customGreen 

enter image description here

+0

Esto necesita estar en la parte superior de la lista de respuestas. – amallard

Cuestiones relacionadas