Set sprite to default color - ios

I have a sprite and I set its color and then I want to set it back to the old color(Default color) how can I do it
here a simple code
sprite = [[CCSprite alloc] initWithFile:#"zero.png"];
sprite.color = ccc3(255, 223, 0);
....
How to set it back to the default color
sprite.color = ???????
or I have to find out the default color by find that old color RGB code?

sprite.color = ccWHITE;
And I have to add some text here so SO will accept the answer. :)
ccWHITE is the same as ccc3(255, 255, 255)

Related

Sprite color not changing in Swift iOS

My sprite image is black, I want to change this color to whatever I want.
The code I'm using:
var sprite = SKSpriteNode(imageNamed: "layer1-0\(random(1..<4))")
ceilingPieces.append(sprite)
sprite.setScale(0.5)
sprite.position = CGPointMake(900, 335)
sprite.color = UIColor.purpleColor()
sprite.colorBlendFactor = 1.0
self.addChild(sprite)
The image stays black, but I want it to be purple.
Thanks!
Toby.
A black tile image isn't going to be able to tint. You're working with filters here so it doesn't matter what you put over it, it's still going to look black. Get a white or mostly white image and you'll see that it will work as expected. Again, tint color is multiplied by the original color to get to the end result.
If you were instead working with
var sprite = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(100, 100))
you could then change the color but it would be a blend, it would simply be changing the color with
sprite.color = UIColor.purpleColor()

Change font filling color in Sprite Kit

I'm facing a problem using a "open" font with Xcode. My aim is to get a text like the following:
I tried using this part of code:
// Creates the 'Welcome' label node
SKLabelNode *welcomeLabel;
welcomeLabel = [SKLabelNode labelNodeWithFontNamed:#"Welcome-font"];
welcomeLabel.position = CGPointMake(0, 0);
welcomeLabel.fontSize = 10.0;
welcomeLabel.fontColor = [UIColor redColor]; // TRY CHANGING COLOR
welcomeLabel.text = #"Welcome";
[self addChild:welcomeLabel];
but what I get is a red border and a transparent background:
This is my very first time using a font with alpha inside and I don't know how to figure it out! Could someone help me to achieve that?
(I am using Xcode 6.3 and the .ttf version of the font)
There is no concept of multi color fonts in iOS. The font itself does not describe the red area in your first image.
If you have the font in a solid variant, draw that first in red, then the black outline on top.

Get the right color in iOS7 translucent navigation bar

How can I get the right coloring for my translucent navigation bars in iOS 7? The navigation bar just adjusts the given color to a much brighter one. Changing brightness or saturation of the color also doesn´t deliver the right result.
Anyone having the same trouble? It seems to work somehow, looking at Facebook: they´re having their colors and translucent navigation bars.
Edit: Just to make it clear: I need the Bar to be translucent, not transparent (with some alpha), not solid! http://en.wikipedia.org/wiki/Transparency_and_translucency
Edit: Now posted to Apple BugReporter
The bar will adjust your color values.
Preferred method, for RGB >= 40 only, will give the most blurring
You can use this calculator and put in what you want the color to be when rendered on screen, it will tell you what to set the color of the barTintColor so when Apple adjusts it, it will show as intended
https://www.transpire.com/insights/blog/bar-color-calculator/
Edit: Note that these calculations are for a white background, and for lighter colours (rgb over 40, if you need darker, you will need to add a background layer like others have mentioned - although that will reduce the bar's blur)
In depth guide: https://www.transpire.com/insights/blog/custom-ui-navigationbar-colors-ios7/
Snippet:
#interface UnderlayNavigationBar : UINavigationBar
#end
.
#interface UnderlayNavigationBar ()
{
UIView* _underlayView;
}
- (UIView*) underlayView;
#end
#implementation UnderlayNavigationBar
- (void) didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
if(subview != _underlayView)
{
UIView* underlayView = self.underlayView;
[underlayView removeFromSuperview];
[self insertSubview:underlayView atIndex:1];
}
}
- (UIView*) underlayView
{
if(_underlayView == nil)
{
const CGFloat statusBarHeight = 20; // Make this dynamic in your own code...
const CGSize selfSize = self.frame.size;
_underlayView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, selfSize.width, selfSize.height + statusBarHeight)];
[_underlayView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[_underlayView setBackgroundColor:[UIColor colorWithRed:0.0f green:0.34f blue:0.62f alpha:1.0f]];
[_underlayView setAlpha:0.36f];
[_underlayView setUserInteractionEnabled:NO];
}
return _underlayView;
}
#end
.
UIViewController* rootViewController = ...;
UINavigationController* navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[UnderlayNavigationBar class] toolbarClass:nil];
[navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:0.0f green:0.0f blue:90.0f/255.0f alpha:1]];
[navigationController setViewControllers:#[rootViewController]];
You simply need to change translucent property
navigationBar.translucent = NO;
It is effectively the same as removing/making transparent subviews/sublayers of the navigation bar.
I've improved code from Achieving bright, vivid colors for an iOS 7 translucent UINavigationBar in my fork: https://github.com/allenhsu/CRNavigationController
With my modification, the result color on screen (picked on white background) will be exactly the same value passed into setBarTintColor. I think it's an amazing solution.
I know this answer is a little late, but if you're using Interface Builder, you might be getting the wrong color when using a hex value because Interface Builder is set to use the wrong color space. In Xcode 6.4, you can press the little gear in the top right of the color picker dialog to pick which color space you're using:
Mine was set to sRGB IEC6196-2.1, when I actually should have been using Generic RGB.
If your color isn't exceptionally vivid, you can calculate the equivalent color w/ alpha. This works well in iOS 7.0.3+; prior to 7.0.3 it automatically applied a 0.5 alpha.
This code assumes that your input color is RGB and is opaque, and that your background color is white:
- (UIColor *) colorByInterpolatingForBarTintWithMinimumAlpha: (CGFloat) alpha
{
NSAssert(self.canProvideRGBComponents, #"Self must be a RGB color to use arithmatic operations");
NSAssert(self.alpha == 1, #"Self must be an opaque RGB color");
CGFloat r, g, b, a;
if (![self getRed:&r green:&g blue:&b alpha:&a]) return nil;
CGFloat r2,g2,b2,a2;
r2 = g2 = b2 = a2 = 1;
CGFloat red,green,blue;
alpha -= 0.01;
do {
alpha += 0.01;
red = (r - r2 + r2 * alpha) / alpha;
green = (g - g2 + g2 * alpha) / alpha;
blue = (b - b2 + b2 * alpha) / alpha;
} while (alpha < 1 && (red < 0 || green < 0 || blue < 0 || red > 1 || green > 1 || blue > 1));
UIColor *new = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
return new;
}
If anyone has a more elegant way of calculating the alpha (I'm cringing at that do-while loop) I'd love to see it: https://gist.github.com/sgtsquiggs/7206385
Just use this simple barTintColor Calculator:
http://htmlpreview.github.io/?https://github.com/tparry/Miscellaneous/blob/master/UINavigationBar_UIColor_calculator.html
Here is another way to get right color of translucent navigation bar in iOS 7.x and later. For some colors it's possible to find the optimal bar tint color that makes translucent bar to appear with color that matches the desired one.
For example, for Facebook color that is rgb: 65,96,156 or #41609c the optimal color is #21458c. The following code set all navigation bars in the app to be of Facebook color with native cocoa-touch API only:
UIColor* barColor = [UIColor colorWithRed:0.129995 green:0.273324 blue:0.549711 alpha:1.0]; // #21458c to make bars actual color match the #41609c color.
[[UINavigationBar appearance] setBarTintColor:barColor];
The only limitation of the method is that optimized color can't be found for every possible color. Usually this is not possible for dark colors.
I made an BarTintColorOptimizer utility that should be run on the device to search for optimized bar color for any color you enter.
I suppose you have read all the comments above. If you want to get the custom background & translucency you should override the navigationbar class and implement your own layoutsubviews method. Simple add additional subview here. IMPORTANT: you should add it just above the background subview of the NavigationBar. It will hide your header or buttons if you just put it above the all subviews.
Also, check out this question
Simple/fast solution that worked for me.
Just set the bar tint in the storyboard rather than the background.
First select your Navigation Bar in your Navigation Controller
And then click the attributes inspector on the right and then set the Bar Tint
You can select a pre-defined color or click on the color to set it to something else.
To make tint color look darker you can change the backgroundColor of the navigation bar:
UIColor *color1 = [UIColor colorWithRed:55.0f/256.0f green:0.0f blue:1.0f alpha:1.0f];
[navBar setBarStyle:UIBarStyleBlackTranslucent];
[navBar setBarTintColor:color1];
UIColor *color2 = [UIColor colorWithWhite:0 alpha:0.3];
[navBar setBackgroundColor:color2];
Try playing around with color1 and color2 to achieve the result that fits to you. Anything else would be fighting the framework.
navBar.barTintColor = [UIColor orangeColor];
navBar.translucent = YES;
UIColor *backgroundLayerColor = [[UIColor redColor] colorWithAlphaComponent:0.7f];
static CGFloat kStatusBarHeight = 20;
CALayer *navBackgroundLayer = [CALayer layer];
navBackgroundLayer.backgroundColor = [backgroundLayerColor CGColor];
navBackgroundLayer.frame = CGRectMake(0, -kStatusBarHeight, navBar.frame.size.width,
kStatusBarHeight + navBar.frame.size.height);
[navBar.layer addSublayer:navBackgroundLayer];
// move the layer behind the navBar
navBackgroundLayer.zPosition = -1;
Note you'll still need to muck with the the barTintColor and the backgroundLayerColor to get the exact color you want. Also, of course the colors depends on your content view's background color (e.g. white).
I've extented UINavigationController,
on its viewDidLoad, i've added a background with the same color of the tint.
Also, i've set the background frame to cover the status bar area:
self.navigationBar.barTintColor = navBackgroundColor;
CGRect bgFrame = self.navigationBar.bounds;
bgFrame.origin.y -= 20.0;
bgFrame.size.height += 20.0;
UIView *backgroundView = [[UIView alloc] initWithFrame:bgFrame];
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
backgroundView.backgroundColor = navBackgroundColor;
backgroundView.alpha = 0.6;
[self.navigationBar addSubview:backgroundView];
[self.navigationBar sendSubviewToBack:backgroundView];
On my case alpha 0.6 got the job done, but you can play with it.
If you're using swift 2.0 you can use this, this will remove the blur and have the color show properly.
UINavigationBar.appearance().translucent = false
From comparing my before an after colors I found there was a drop of 21% in saturation while Hue and Brightness remained the same.
By adding the 21% back on I was able to improve the color matching significantly. Unfortunately our color had a saturation above 80 to start with so pushing it above 100% had diminishing returns and didn't match perfectly but it got much closer.
For colors with saturation below 80 it should do even better.
For info on how to adjust saturation of your color How can I modify a UIColor's hue, brightness and saturation?
You can run the application in the simulator and take the color of the navigation bar using the Eyedropper tool.
i've looked a lot around and none of these has actually worked for me, the solution is as the following:
1- Set your navigation barTintColor (background).
2- Run the simulator and open your app, in your mac open Digital Color Meter and select the drop down to "Display in Generic RGB".
3- Use this tool to pick the navigation color that you will set for your view.
4- Go to storyboard and then select background color and make sure its on RGB Sliders, and put the color in here, you will get the exact same color of the navigation bar.
Note: it doesn't matter if isTranslucent is on or off.
Hope this helps you out.
This should work:
UIColor *barColour = [UIColor colorWithRed:0.13f green:0.14f blue:0.15f alpha:1.00f];
UIView *colourView = [[UIView alloc] initWithFrame:CGRectMake(0.f, -20.f, 320.f, 64.f)];
colourView.opaque = NO;
colourView.alpha = .7f;
colourView.backgroundColor = barColour;
self.navigationBar.barTintColor = barColour;
[self.navigationBar.layer insertSublayer:colourView.layer atIndex:1];
Taken from here
This works for me:
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, -20,navigationBar.frame.size.width,navigationBar.frame.size.height + 20);
layer.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.75].CGColor;
layer.zPosition = -5;
[navigationBar.layer addSublayer:layer];
This happens because the navigationBar.translucent == YES. Set this property to NO and it will be the correct color. However, I have not found out how to apply this translucent setting to all navigation bars without calling it explicitly on each. The status bar also stays the same color as the navigation bar this way.
Try rendering corresponding background image for your navigation bar. That worked for my test application.
UIGraphicsBeginImageContext(CGSizeMake(1, 1));
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor colorWithRed:55.0f/256.0f green:0.0f blue:1.0f alpha:0.5f] set];
CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
UIImage *navBarBackgroundImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[UINavigationBar appearance] setBackgroundImage:navBarBackgroundImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:navBarBackgroundImage forBarMetrics:UIBarMetricsLandscapePhone];

How i can change CCLabelBMFont text color

How i can change CCLabelBMFont text color.
highScoreLabel = [CCLabelBMFont labelWithString:highScore fntFile:#"markerFelt.fnt"];
With the color property, for example:
highScoreLabel.color = ccc3(240, 40, 40);
This would only work well if the original color was white.

Making Glow effect to font

I wonder if anybody have an example for Glow effect for font? I tried to look in NSAttributedString but I don't find in attribute for glowing text.
Try this:
#include <Quartzcore/Quartzcore.h>
.......
yourLabel.layer.shadowColor = [[UIColor glowColor] CGColor]; //Replace glowColor with the desired color (redColor, greenColor, etc.)
yourLabel.layer.shadowOffset = CGSizeMake(0.0, 0.0); //The glow starts from the center
yourLabel.layer.shadowRadius = 20.0; //You can change this to the desired amount
yourLabel.layer.shadowOpacity = 0.5; //You can change this to the desired amount
yourLabel.layer.masksToBounds = NO; //Keep this the same to avoid shadow being clipped by the label bounds
Hope this helps!

Resources