jeudi 26 janvier 2012

Un peu de couleur dans votre vie

Voici trois catégories que j'ai écrit sur UIColor pour certains de mes projets. Je ne sais pas comment ils seront utiles pour vous, mais quelqu'un là-bas pourraient les trouver utiles, alors j'ai pensé que je partagerais.

Le premier, UIColor (OpenGL), vous permet de définir la couleur en OpenGL en utilisant un objet de la UIColor UIKit. Cela ne fonctionnera pas avec des objets qui utilisent les espaces UIColor autre couleur que le gris et le RGBA, mais il fonctionne très bien pour ceux. Toutes les méthodes de la classe UIColor comme + whiteColor et couleurs + retour blueColor avec l'un de ces deux espaces de couleurs, de sorte que la grande majorité du temps, cela fonctionne très bien.

UIColor-OpenGL.h

#import
#import
#import
#import
#import

@interface UIColor(OpenGL)
- (void)setOpenGLColor;
@end


UIColor-OpenGL.m

#import "UIColor-OpenGL.h"

@implementation UIColor(OpenGL)
- (void)setOpenGLColor
{
CGColorRef color = self.CGColor;
int numComponents = CGColorGetNumberOfComponents(color);

if (numComponents == 2)
{
const CGFloat *components = CGColorGetComponents(color);
CGFloat all = components[0];
CGFloat alpha = components[1];

glColor4f(all,all, all, alpha);
}
else
{
const CGFloat *components = CGColorGetComponents(color);
CGFloat red = components[0];
CGFloat green = components[1];
CGFloat blue = components[2];
CGFloat alpha = components[3];
glColor4f(red,green, blue, alpha);
}

}
@end


Cette deuxième va générer une couleur aléatoire. Cette version renvoie toujours une couleur avec une valeur alpha de 1.0f, cependant vous pouvez facilement modifier ce faire que l'aléatoire aussi bien.

UIColor-Random.h

#import

@interface UIColor(Random)
+(UIColor *)randomColor;
@end


UIColor-Random.m

#import "UIColor-Random.h"

@implementation UIColor(Random)
+(UIColor *)randomColor
{
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
@end


Ce dernier est très bien un travail en cours. J'ai été d'ajouter d'autres méthodes de fabrique de classe pour UIColor avec des couleurs supplémentaires. Je trouve l'ensemble des stocks d'une douzaine de couleurs pour être une sorte de limitation. Quand je suis fait, je l'espère, d'avoir plus d'une centaine nuances supplémentaires, mais de plein droit maintenant, j'ai seulement ajouté une fraction de cela, mais d'autres sont sûrs d'être sortant d'un projet, je travaille en ce moment .

UIColor-MoreColors.h

#import

@interface UIColor(MoreColors)
+ (id)indigoColor;
+ (id)tealColor;
+ (id)violetColor;
+ (id)electricVioletColor;
+ (id)vividVioletColor;
+ (id)darkVioletColor;
+ (id)amberColor;
+ (id)darkAmberColor;
+ (id)lemonColor;
+ (id)roseColor;
+ (id)rubyColor;
+ (id)fireEndingRed;
@end



UIColor-MoreColors.m

#import "UIColor-MoreColors.h"

#define vendColor(r, g, b) static UIColor *ret; if (ret == nil) ret = [[UIColor colorWithRed:r green:g blue:b alpha:1.0] retain]; return ret

@implementation UIColor(MoreColors)
#pragma mark Blues
#pragma mark -
+ (id)indigoColor
{
vendColor(.294f, 0.0f, .509f);
}
+ (id)tealColor
{
vendColor(0.0f, 0.5f, 0.5f);
}
#pragma mark -
#pragma mark Purples
#pragma mark -
+ (id)violetColor
{
vendColor (.498f, 0.0f, 1.0f);
}
+ (id)electricVioletColor
{
vendColor(.506f, 0.0f, 1.0f);
}
+ (id)vividVioletColor
{
vendColor(.506f, 0.0f, 1.0f);
}
+ (id)darkVioletColor
{
vendColor(.58f, 0.0f, .827f);
}
#pragma mark -
#pragma mark Yellows
#pragma mark -
+ (id)amberColor
{
vendColor(1.0f, .75f, 0.0f);
}
+ (id)darkAmberColor
{
vendColor(1.0f, .494f, 0.0f);
}
+ (id)lemonColor
{
vendColor(1.0f, .914f, .0627f);
}
#pragma mark -
#pragma mark Reds
#pragma mark -
+ (id)roseColor
{
vendColor(1.0f, 0.0f, 0.5f);
}
+ (id)rubyColor
{
vendColor(0.8784f, .06667f, .3725f);
}
+ (id)fireEngineRed
{
vendColor(0.8078f, 0.0863f, 0.1255f);
}


C'est tout pour aujourd'hui. Si vous avez d'autres méthodes que vous souhaitez contribuer à l'autre de ces catégories, par tous moyens, à me les envoyer à jeff-soulignent-Lamarche-esperluète-mac-dot-com, et je vais les ajouter et de re-publier entre eux. Désolé pour l'obscurcissement, mais je reçois beaucoup de courrier indésirable comme il est.

Aucun commentaire: