Ipphones

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Monday, 24 November 2008

Shameless Post

Posted on 17:15 by Unknown
Today, I noticed that the book reached #213 on Amazon's overall rank. I never expected it to break 500 and was doubtful about 500. The fact that it's been hovering around 300 for a week, and now has come close to 200 is just got me feeling peachy.



Edit: We seem to have peaked at 147 and have now backed off a bit, but are still doing well.

Edit 2: Went back down to 139 tonight, and we've made Amazon's hot new arrival list. We've climbed ahead of Martha Stewart's book as well as I Can Haz Cheeseburger.
Read More
Posted in Amazon, Book project | No comments

Sunday, 23 November 2008

Scratch That

Posted on 09:22 by Unknown
Dave and I won't be appearing on iPhone Alley this week, we got bumped so they would have time to cover the the 2.2 release. I'll let you know if we get rescheduled.
Read More
Posted in Book project, iPhone SDK, Podcasts | No comments

Friday, 21 November 2008

A Novel Business Model

Posted on 15:20 by Unknown
Here's a company that gives away their iPhone apps, but sells the underlying source code. Interesting approach, and I'm sure there is a market for good iPhone libraries and source code. The only shortcoming that I see is that there's no way to know how good the underlying code is. This company's apps undoubtedly look nice, but a pretty GUI is no guarantee of well-written code. The underlying code could be stellar, or it could be functional but disorganized and poorly written, and there's really no way to know without shelling out the cash. Unfortunately, the people who can benefit the most from code like this are the ones least able to distinguish between good and bad code.

That creates a bit of a catch-22 for the company. If they show people the code, it's hard to keep people from using it, but buying something sight unseen makes some people (like me) a little nervous. It's like buying a mystery bag, or playing the lottery, neither of which I would ever do.

If I were them, I'd probably try and get some testimonials from some respected developers - get a few people with some know-how to say "yeah, their code is good". I think it would make people more comfortable about shelling out cash to buy source code they can't look at first.

Note: I've heard from someone who has bought one of the source code projects, and the feedback was positive. This person said the code was "well organized" and "clean", though he hadn't had a chance to look at it in detail yet. That's definitely good news for the Tausendstern folks, and for their potential customers. I've decided to purchase the package and take a look for myself - I'll give a report here when I do.
Read More
Posted in Blogs, iPhone Applications, iPhone SDK, Open Source | No comments

iPhone Alley

Posted on 12:13 by Unknown
Looks like Dave and I are going to make an appearance on the iPhone Alley Podcast next week. We're recording on Sunday night, so I would imagine the podcast will be available not more than a few days later. I'll post again with the URL when the podcast is actually available.

We've got a few more interviews being lined up, but if you've got a podcast, magazine, or blog with an iPhone-savvy audience, we've love to talk to you.

We're also trying to figure out about MacWorld. Dave and I were hoping to go there in some official capacity, being on a panel, or signing books, but that's starting to look unlikely. I will probably still be there, but just as an attendee, and I would love the opportunity to meet some new folks and re-connect with others while I'm out there.
Read More
Posted in Book project, iPhone SDK, Podcasts | No comments

Adding Photos to iPhone Library

Posted on 08:07 by Unknown
Here's a tip I picked up from the iPhoneDevSDK forums courtesy of member hikinks.

The iPhone simulator comes with some sample images installed so that you can use and test the Image Picker and other functionality. The only problem is, if you clear the cache, or delete the ~/Library/Application Support/iPhone Simulator folder, you lose them.

You can put any photos you want in the library, however, to get them to show up, you need to put them in the right place and give them the correct names. Place your images in
~/Library/Application Support/iPhone Simulator/User/Media/DCIM/100APPLE

creating any folders that do not exist.

Now, rename the image files you want in your simulator's photo library using the following naming convention:

IMG_0000.JPG
IMG_0001.JPG
IMG_0002.JPG

Remember - unlike the Mac, the iPhone's file system is case sensitive, so make sure you use uppercase letters.

That will put them in the photo album. You do not see thumbnails though. To get thumbnails, you have to manually make re-sized copies of each image that are resized to 96x96 pixels. The thumbnail for a particular image should have the same name as the image it is a thumbnail for, but instead of a .JPG extension, it should have a .THM extension.


The Of Code and Men blog has a bash script that will functions for copying the files onto the simulator.

Edit: I've been told that there's an easier way - that you can simply drag an image onto the Simulator window when it's running and that will open the image in Mobile Safari and then let you add the image to the Simulator's Photo Library. I've found that to be half true - I can get the image from my computer to open in Mobile Safari in the Simulator, but the path from there to the Photo Library is not obvious to me if it exists.
Read More
Posted in Blogs, iPhone SDK, iPhone Simulator | No comments

iPhone SDK & OS 2.2 is Out

Posted on 07:08 by Unknown
I'm a little slow on the ball this morning - usually the iPhone Dev Center is one of my first stops on my morning routine, but somehow didn't go there this morning. Was alerted to the fact that 2.2 is now the release version via a tweet. You should update your iPhone or iPod Touch via iTunes before installing the 2.2 SDK.

If my understanding is correct, that means 2.2 can now be openly discussed. Wonder how long it is until we start getting seeded 2.3 betas?

Edit: You should download the 2.2 SDK, THEN update your phone through iTunes, and then install the SDK. Once you update your phone, you will be unable to continue using it as a development device until you install the 2.2 SDK, and right now, throughput on the download isn't that great.
Read More
Posted in iPhone Dev Center, iPhone SDK, New Release | No comments

Thursday, 20 November 2008

Very Nice

Posted on 08:41 by Unknown
Today, our book got a very nice plug from distorted-loop.com, with even a quote from my co-author. Big thanks to those folks for the kind words. If you're into music and technology, you should check them out.

Also, no a completely unrelated note, the holiday shopping season has arrived early this year. I know this because all the Google advertisements on the blogs I read have switched from iPhone and Mac related stuff to jewelry, perfume, and other such things.
Read More
Posted in Blog, Book project | No comments

"Officially" released

Posted on 07:51 by Unknown
I guess the book is now officially released. Although Amazon has been filling pre-orders for almost a week now, the official press release didn't go out until yesterday, whichi s about the time that Amazon changed from "Usually ships in 4-7 weeks" to "In Stock".

Our Amazon rank jumped below #500 overall today. It probably won't stay down there - this is a niche book after all - but it feels good to see it even get to visit down there, not to mention seeing it be the #1 book in three categories to boot. I know these numbers are transient, but it does the ego good.

The official Book Website is live now, as are support forums where you can ask questions, get help, and find errata.
Read More
Posted in Amazon, Book project, iPhone SDK | No comments

Daring Fireball on Google's use of Private APIs

Posted on 05:45 by Unknown
Here is an interesting posting, and nice bit of detective work on the part of John Gruber with some help from Robert Marini. I often agree with Mr. Gruber, but I especially agree with the sentiment of this posting, I do think the chances that the app just slipped through the approval process are greater than he seems to, though: I think it's very possible that the app just slipped through and wasn't actually given special consideration.

But if Google was given special consideration, then I completely agree that that sucks.

Edit: Here's another blog posting that expands on the theory. Thanks, Prasad!
Read More
Posted in iPhone SDK, private APIs Google | No comments

Thursday, 13 November 2008

Book is Shipping

Posted on 12:35 by Unknown
If you pre-ordered our iPhone book from Amazon, you should receive a shipment notification in the next day or two, if you haven't already. They still have two in stock after filling pre-orders.
Read More
Posted in Book project, iPhone SDK | No comments

Creating Transparent UIViews - a Rounded Rect View

Posted on 09:05 by Unknown
I recently needed a view that had the shape of a rounded rectangle. Drawing a rounded rect using Core Graphics isn't particularly hard. As a matter of fact, the QuartzDemo sample code shows one way to do it. So, I dutifully created the view to draw a rounded rect. No matter what I did, however, it drew white all the way to the boundary of the view. My first version of the rounded rectangle view came out decidedly non-rounded.

The problem was that I was using the backgroundColor property inherited from UIView to identify what color to draw the rounded rectangle. But, and here's the point to remember today: if you need objects below yours to show through parts of your view without using alpha, the backgroundColor property MUST be set to [UIColor clearColor]. This is true even if you do not call drawRect on super.

The other thing you need to do is make sure that the opaqueproperty is set to NO. Ordinarily, opaque should be set to YES as an optimization, but that optimization isn't available to us if we want stuff to show through from below.

My second attempt at a rounded rectangle view was decidedly more rounded:

Because I knew that I would likely have need of a rounded rectangle view in the future, I wrote it generically. And, here it is, may it serve you well:

RoundedRectView.h
//
// RoundedRectView.h
//
// Created by Jeff LaMarche on 11/13/08.

#import <UIKit/UIKit.h>

#define kDefaultStrokeColor [UIColor whiteColor]
#define kDefaultRectColor [UIColor whiteColor]
#define kDefaultStrokeWidth 1.0
#define kDefaultCornerRadius 30.0

@interface RoundedRectView : UIView {
UIColor *strokeColor;
UIColor *rectColor;
CGFloat strokeWidth;
CGFloat cornerRadius;
}
@property (nonatomic, retain) UIColor *strokeColor;
@property (nonatomic, retain) UIColor *rectColor;
@property CGFloat strokeWidth;
@property CGFloat cornerRadius;
@end



RoundedRectView.m
//
// RoundedRectView.m
//
// Created by Jeff LaMarche on 11/13/08.

#import "RoundedRectView.h"

@implementation RoundedRectView
@synthesize strokeColor;
@synthesize rectColor;
@synthesize strokeWidth;
@synthesize cornerRadius;
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder:decoder])
{
self.strokeColor = kDefaultStrokeColor;
self.backgroundColor = [UIColor clearColor];
self.strokeWidth = kDefaultStrokeWidth;
self.rectColor = kDefaultRectColor;
self.cornerRadius = kDefaultCornerRadius;
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
// Initialization code
self.opaque = NO;
self.strokeColor = kDefaultStrokeColor;
self.backgroundColor = [UIColor clearColor];
self.rectColor = kDefaultRectColor;
self.strokeWidth = kDefaultStrokeWidth;
self.cornerRadius = kDefaultCornerRadius;
}
return self;
}
- (void)setBackgroundColor:(UIColor *)newBGColor
{
// Ignore any attempt to set background color - backgroundColor must stay set to clearColor
// We could throw an exception here, but that would cause problems with IB, since backgroundColor
// is a palletized property, IB will attempt to set backgroundColor for any view that is loaded
// from a nib, so instead, we just quietly ignore this.
//
// Alternatively, we could put an NSLog statement here to tell the programmer to set rectColor...
}
- (void)setOpaque:(BOOL)newIsOpaque
{
// Ignore attempt to set opaque to YES.
}
- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, strokeWidth);
CGContextSetStrokeColorWithColor(context, self.strokeColor.CGColor);
CGContextSetFillColorWithColor(context, self.rectColor.CGColor);

CGRect rrect = self.bounds;

CGFloat radius = cornerRadius;
CGFloat width = CGRectGetWidth(rrect);
CGFloat height = CGRectGetHeight(rrect);

// Make sure corner radius isn't larger than half the shorter side
if (radius > width/2.0)
radius = width/2.0;
if (radius > height/2.0)
radius = height/2.0;

CGFloat minx = CGRectGetMinX(rrect);
CGFloat midx = CGRectGetMidX(rrect);
CGFloat maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect);
CGFloat midy = CGRectGetMidY(rrect);
CGFloat maxy = CGRectGetMaxY(rrect);
CGContextMoveToPoint(context, minx, midy);
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);
}

- (void)dealloc {
[strokeColor release];
[rectColor release];
[super dealloc];
}

@end

Read More
Posted in | No comments

A Note on Code Samples

Posted on 08:42 by Unknown
For the record, any code that I post on this blog can be freely used for any purpose without restriction or limitation. You do not need to ask permission, nor do you need to attribute me.

I will make it clear in the posting if any code is released under other terms. I would only do that if I had to, because (for example) the code was based on existing code that used a viral license, or the code was written for a client that insists on a license in order to allow me to distribute it

But, if I don't clearly state that there are restrictions or limitations, assume there are none.
Read More
Posted in iPhone SDK, Licensing, snippet | No comments

Wednesday, 12 November 2008

Testing Code Signing

Posted on 20:42 by Unknown
Another hugely helpful blog posting from Craig Hockenberry about how to test your codesigned apps. I'd put this posting as a must-read for anyone compiling their apps for the App Store.
Read More
Posted in Blogs, Code Signing, iPhone SDK | No comments

More Colors, More Compact

Posted on 10:45 by Unknown
Whenever I have need of a new color in a project, I add new methods to my UIColor(MoreColors) category. I recently refactored it to be more compact and to require less typing to add a new color. I'm pulling the color names and definitions from Wikipedia.

Edit: I got tired of doing these piecemeal, so I decided to use awk to generate a category that includes all the colors that Wikipedia lists.

I'm normally not someone to skimp on vertical space, but compacting this just fell right, makes it more comprehensible. Consistency, after all, is the hobgoblin of little minds.

For those playing along at home, here is where it currently stands:

UIColor-MoreColors.h
//
// UIColor-MoreColors.h
//
// Created by Jeff LaMarche on 9/29/08.

#import <UIKit/UIKit.h>

@interface UIColor(MoreColors)
+ (id)aliceBlue;
+ (id)alizarin;
+ (id)amaranth;
+ (id)amber;
+ (id)amethyst;
+ (id)apricot;
+ (id)aqua;
+ (id)aquamarine;
+ (id)armyGreen;
+ (id)asparagus;
+ (id)atomicTangerine;
+ (id)auburn;
+ (id)azure;
+ (id)azureWeb;
+ (id)babyBlue;
+ (id)beige;
+ (id)bistre;
+ (id)black;
+ (id)blue;
+ (id)pigmentBlue;
+ (id)rybBlue;
+ (id)blueGreen;
+ (id)blueViolet;
+ (id)bondiBlue;
+ (id)brass;
+ (id)brightGreen;
+ (id)brightPink;
+ (id)brightTurquoise;
+ (id)brilliantRose;
+ (id)britishRacingGreen;
+ (id)bronze;
+ (id)brown;
+ (id)buff;
+ (id)burgundy;
+ (id)burntOrange;
+ (id)burntSienna;
+ (id)burntUmber;
+ (id)camouflageGreen;
+ (id)caputMortuum;
+ (id)cardinal;
+ (id)carmine;
+ (id)carnationPink;
+ (id)carolinaBlue;
+ (id)carrotOrange;
+ (id)celadon;
+ (id)cerise;
+ (id)cerulean;
+ (id)ceruleanBlue;
+ (id)champagne;
+ (id)charcoal;
+ (id)chartreuse;
+ (id)chartreuseWeb;
+ (id)cherryBlossomPink;
+ (id)chestnut;
+ (id)chocolate;
+ (id)cinnabar;
+ (id)cinnamon;
+ (id)cobalt;
+ (id)columbiaBlue;
+ (id)copper;
+ (id)copperRose;
+ (id)coral;
+ (id)coralRed;
+ (id)corn;
+ (id)cornflowerBlue;
+ (id)cosmicLatte;
+ (id)cream;
+ (id)crimson;
+ (id)cyan;
+ (id)processCyan;
+ (id)darkBlue;
+ (id)darkBrown;
+ (id)darkCerulean;
+ (id)darkChestnut;
+ (id)darkCoral;
+ (id)darkGoldenrod;
+ (id)darkGreen;
+ (id)darkKhaki;
+ (id)darkPastelGreen;
+ (id)darkPink;
+ (id)darkScarlet;
+ (id)darkSalmon;
+ (id)darkSlateGray;
+ (id)darkSpringGreen;
+ (id)darkTan;
+ (id)darkTurquoise;
+ (id)darkViolet;
+ (id)deepCerise;
+ (id)deepChestnut;
+ (id)deepFuchsia;
+ (id)deepLilac;
+ (id)deepMagenta;
+ (id)deepPeach;
+ (id)deepPink;
+ (id)denim;
+ (id)dodgerBlue;
+ (id)ecru;
+ (id)egyptianBlue;
+ (id)electricBlue;
+ (id)electricGreen;
+ (id)electricIndigo;
+ (id)electricLime;
+ (id)electricPurple;
+ (id)emerald;
+ (id)eggplant;
+ (id)faluRed;
+ (id)fernGreen;
+ (id)firebrick;
+ (id)flax;
+ (id)forestGreen;
+ (id)frenchRose;
+ (id)fuchsia;
+ (id)fuchsiaPink;
+ (id)gamboge;
+ (id)metallicGold;
+ (id)goldWeb;
+ (id)goldenBrown;
+ (id)goldenYellow;
+ (id)goldenrod;
+ (id)greyAsparagus;
+ (id)green;
+ (id)greenWeb;
+ (id)pigmentGreen;
+ (id)rybGreen;
+ (id)greenYellow;
+ (id)grey;
+ (id)hanPurple;
+ (id)harlequin;
+ (id)heliotrope;
+ (id)hollywoodCerise;
+ (id)hotMagenta;
+ (id)hotPink;
+ (id)indigo;
+ (id)indigoWeb;
+ (id)internationalKleinBlue;
+ (id)internationalOrange;
+ (id)islamicGreen;
+ (id)ivory;
+ (id)jade;
+ (id)kellyGreen;
+ (id)khaki;
+ (id)lightKhaki;
+ (id)lavender;
+ (id)lavenderWeb;
+ (id)lavenderBlue;
+ (id)lavenderBlush;
+ (id)lavenderGrey;
+ (id)lavenderMagenta;
+ (id)lavenderPink;
+ (id)lavenderPurple;
+ (id)lavenderRose;
+ (id)lawnGreen;
+ (id)lemon;
+ (id)lemonChiffon;
+ (id)lightBlue;
+ (id)lightPink;
+ (id)lilac;
+ (id)lime;
+ (id)limeWeb;
+ (id)limeGreen;
+ (id)linen;
+ (id)magenta;
+ (id)magentaDye;
+ (id)processMagenta;
+ (id)magicMint;
+ (id)magnolia;
+ (id)malachite;
+ (id)maroonWeb;
+ (id)maroon;
+ (id)mayaBlue;
+ (id)mauve;
+ (id)mauveTaupe;
+ (id)mediumBlue;
+ (id)mediumCarmine;
+ (id)mediumLavenderMagenta;
+ (id)mediumPurple;
+ (id)mediumSpringGreen;
+ (id)midnightBlue;
+ (id)mintGreen;
+ (id)mistyRose;
+ (id)mossGreen;
+ (id)mountbattenPink;
+ (id)mustard;
+ (id)myrtle;
+ (id)navajoWhite;
+ (id)navyBlue;
+ (id)ochre;
+ (id)officeGreen;
+ (id)oldGold;
+ (id)oldLace;
+ (id)oldLavender;
+ (id)oldRose;
+ (id)olive;
+ (id)oliveDrab;
+ (id)olivine;
+ (id)orange;
+ (id)rybOrange;
+ (id)orangeWeb;
+ (id)orangePeel;
+ (id)orangeRed;
+ (id)orchid;
+ (id)paleBlue;
+ (id)paleBrown;
+ (id)paleCarmine;
+ (id)paleChestnut;
+ (id)paleCornflowerBlue;
+ (id)paleMagenta;
+ (id)palePink;
+ (id)paleRedViolet;
+ (id)papayaWhip;
+ (id)pastelGreen;
+ (id)pastelPink;
+ (id)peach;
+ (id)peachOrange;
+ (id)peachYellow;
+ (id)pear;
+ (id)periwinkle;
+ (id)persianBlue;
+ (id)persianGreen;
+ (id)persianIndigo;
+ (id)persianOrange;
+ (id)persianRed;
+ (id)persianPink;
+ (id)persianRose;
+ (id)persimmon;
+ (id)pineGreen;
+ (id)pink;
+ (id)pinkOrange;
+ (id)platinum;
+ (id)plum;
+ (id)powderBlue;
+ (id)puce;
+ (id)prussianBlue;
+ (id)psychedelicPurple;
+ (id)pumpkin;
+ (id)purpleWeb;
+ (id)purple;
+ (id)purpleTaupe;
+ (id)rawUmber;
+ (id)razzmatazz;
+ (id)red;
+ (id)pigmentRed;
+ (id)rybRed;
+ (id)redBiolet;
+ (id)richCarmine;
+ (id)robinEggBlue;
+ (id)rose;
+ (id)roseMadder;
+ (id)roseTaupe;
+ (id)royalBlue;
+ (id)royalPurple;
+ (id)ruby;
+ (id)russet;
+ (id)rust;
+ (id)safetyOrange;
+ (id)blazeOrange;
+ (id)saffron;
+ (id)salmon;
+ (id)sandyBrown;
+ (id)sangria;
+ (id)sapphire;
+ (id)scarlet;
+ (id)schoolBusYellow;
+ (id)seaGreen;
+ (id)seashell;
+ (id)selectiveYellow;
+ (id)sepia;
+ (id)shamrockGreen;
+ (id)shockingPink;
+ (id)silver;
+ (id)skyBlue;
+ (id)slateGrey;
+ (id)smalt;
+ (id)springBud;
+ (id)springGreen;
+ (id)steelBlue;
+ (id)tan;
+ (id)tangerine;
+ (id)tangerineYellow;
+ (id)taupe;
+ (id)teaGreen;
+ (id)teaRoseOrange;
+ (id)teaRose;
+ (id)teal;
+ (id)tawny;
+ (id)terraCotta;
+ (id)thistle;
+ (id)tomato;
+ (id)turquoise;
+ (id)tyrianPurple;
+ (id)ultramarine;
+ (id)unitedNationsBlue;
+ (id)vegasGold;
+ (id)vermilion;
+ (id)violet;
+ (id)violetWeb;
+ (id)rybViolet;
+ (id)viridian;
+ (id)wheat;
+ (id)white;
+ (id)wisteria;
+ (id)yellow;
+ (id)processYellow;
+ (id)rybYellow;
+ (id)yellowGreen;
+ (id)zinnwaldite;
@end



UIColor-MoreColors.m
//
// UIColor-MoreColors.m
//
// Created by Jeff LaMarche on 9/29/08.

#import "UIColor-MoreColors.h"

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

@implementation UIColor(MoreColors)
+ (id)aliceBlue {vendColor(240, 248, 255);}
+ (id)alizarin {vendColor(227, 38, 54);}
+ (id)amaranth {vendColor(229, 43, 80);}
+ (id)amber {vendColor(255, 191, 0);}
+ (id)amethyst {vendColor(153, 102, 204);}
+ (id)apricot {vendColor(251, 206, 177);}
+ (id)aqua {vendColor(0, 255, 255);}
+ (id)aquamarine {vendColor(127, 255, 212);}
+ (id)armyGreen {vendColor(75, 83, 32);}
+ (id)asparagus {vendColor(123, 160, 91);}
+ (id)atomicTangerine {vendColor(255, 153, 102);}
+ (id)auburn {vendColor(111, 53, 26);}
+ (id)azure {vendColor(0, 127, 255);}
+ (id)azureWeb {vendColor(240, 255, 255);}
+ (id)babyBlue {vendColor(224, 255, 255);}
+ (id)beige {vendColor(245, 245, 220);}
+ (id)bistre {vendColor(61, 43, 31);}
+ (id)black {vendColor(0, 0, 0);}
+ (id)blue {vendColor(0, 0, 255);}
+ (id)pigmentBlue {vendColor(51, 51, 153);}
+ (id)rybBlue {vendColor(2, 71, 254);}
+ (id)blueGreen {vendColor(0, 223, 223);}
+ (id)blueViolet {vendColor(138, 43, 226);}
+ (id)bondiBlue {vendColor(0, 149, 182);}
+ (id)brass {vendColor(181, 166, 66);}
+ (id)brightGreen {vendColor(102, 255, 0);}
+ (id)brightPink {vendColor(255, 0, 127);}
+ (id)brightTurquoise {vendColor(8, 232, 222);}
+ (id)brilliantRose {vendColor(255, 85, 163);}
+ (id)britishRacingGreen {vendColor(0, 66, 37);}
+ (id)bronze {vendColor(205, 127, 50);}
+ (id)brown {vendColor(150, 75, 0);}
+ (id)buff {vendColor(240, 220, 130);}
+ (id)burgundy {vendColor(128, 0, 32);}
+ (id)burntOrange {vendColor(204, 85, 0);}
+ (id)burntSienna {vendColor(233, 116, 81);}
+ (id)burntUmber {vendColor(138, 51, 36);}
+ (id)camouflageGreen {vendColor(120, 134, 107);}
+ (id)caputMortuum {vendColor(89, 39, 32);}
+ (id)cardinal {vendColor(196, 30, 58);}
+ (id)carmine {vendColor(150, 0, 24);}
+ (id)carnationPink {vendColor(255, 166, 201);}
+ (id)carolinaBlue {vendColor(156, 186, 227);}
+ (id)carrotOrange {vendColor(237, 145, 33);}
+ (id)celadon {vendColor(172, 225, 175);}
+ (id)cerise {vendColor(222, 49, 99);}
+ (id)cerulean {vendColor(0, 123, 167);}
+ (id)ceruleanBlue {vendColor(42, 82, 190);}
+ (id)champagne {vendColor(247, 231, 206);}
+ (id)charcoal {vendColor(70, 70, 70);}
+ (id)chartreuse {vendColor(223, 255, 0);}
+ (id)chartreuseWeb {vendColor(127, 255, 0);}
+ (id)cherryBlossomPink {vendColor(255, 183, 197);}
+ (id)chestnut {vendColor(205, 92, 92);}
+ (id)chocolate {vendColor(123, 63, 0);}
+ (id)cinnabar {vendColor(227, 66, 52);}
+ (id)cinnamon {vendColor(210, 105, 30);}
+ (id)cobalt {vendColor(0, 71, 171);}
+ (id)columbiaBlue {vendColor(155, 221, 255);}
+ (id)copper {vendColor(184, 115, 51);}
+ (id)copperRose {vendColor(153, 102, 102);}
+ (id)coral {vendColor(255, 127, 80);}
+ (id)coralRed {vendColor(255, 64, 64);}
+ (id)corn {vendColor(251, 236, 93);}
+ (id)cornflowerBlue {vendColor(100, 149, 237);}
+ (id)cosmicLatte {vendColor(255, 248, 231);}
+ (id)cream {vendColor(255, 253, 208);}
+ (id)crimson {vendColor(220, 20, 60);}
+ (id)cyan {vendColor(0, 255, 255);}
+ (id)processCyan {vendColor(0, 180, 247);}
+ (id)darkBlue {vendColor(0, 0, 139);}
+ (id)darkBrown {vendColor(101, 67, 33);}
+ (id)darkCerulean {vendColor(8, 69, 126);}
+ (id)darkChestnut {vendColor(152, 105, 96);}
+ (id)darkCoral {vendColor(205, 91, 69);}
+ (id)darkGoldenrod {vendColor(184, 134, 11);}
+ (id)darkGreen {vendColor(1, 50, 32);}
+ (id)darkKhaki {vendColor(189, 183, 107);}
+ (id)darkPastelGreen {vendColor(3, 192, 60);}
+ (id)darkPink {vendColor(231, 84, 128);}
+ (id)darkScarlet {vendColor(86, 3, 125);}
+ (id)darkSalmon {vendColor(233, 150, 122);}
+ (id)darkSlateGray {vendColor(47, 79, 79);}
+ (id)darkSpringGreen {vendColor(23, 114, 69);}
+ (id)darkTan {vendColor(145, 129, 81);}
+ (id)darkTurquoise {vendColor(0, 206, 209);}
+ (id)darkViolet {vendColor(148, 0, 211);}
+ (id)deepCerise {vendColor(218, 50, 135);}
+ (id)deepChestnut {vendColor(185, 78, 72);}
+ (id)deepFuchsia {vendColor(193, 84, 193);}
+ (id)deepLilac {vendColor(153, 85, 187);}
+ (id)deepMagenta {vendColor(204, 0, 204);}
+ (id)deepPeach {vendColor(255, 203, 164);}
+ (id)deepPink {vendColor(255, 20, 147);}
+ (id)denim {vendColor(21, 96, 189);}
+ (id)dodgerBlue {vendColor(30, 144, 255);}
+ (id)ecru {vendColor(194, 178, 128);}
+ (id)egyptianBlue {vendColor(16, 52, 166);}
+ (id)electricBlue {vendColor(125, 249, 255);}
+ (id)electricGreen {vendColor(0, 255, 0);}
+ (id)electricIndigo {vendColor(102, 0, 255);}
+ (id)electricLime {vendColor(204, 255, 0);}
+ (id)electricPurple {vendColor(191, 0, 255);}
+ (id)emerald {vendColor(80, 200, 120);}
+ (id)eggplant {vendColor(97, 64, 81);}
+ (id)faluRed {vendColor(128, 24, 24);}
+ (id)fernGreen {vendColor(79, 121, 66);}
+ (id)firebrick {vendColor(178, 34, 34);}
+ (id)flax {vendColor(238, 220, 130);}
+ (id)forestGreen {vendColor(34, 139, 34);}
+ (id)frenchRose {vendColor(246, 74, 138);}
+ (id)fuchsia {vendColor(255, 0, 255);}
+ (id)fuchsiaPink {vendColor(255, 119, 255);}
+ (id)gamboge {vendColor(228, 155, 15);}
+ (id)metallicGold {vendColor(212, 175, 55);}
+ (id)goldWeb {vendColor(255, 215, 0);}
+ (id)goldenBrown {vendColor(153, 101, 21);}
+ (id)goldenYellow {vendColor(255, 223, 0);}
+ (id)goldenrod {vendColor(218, 165, 32);}
+ (id)greyAsparagus {vendColor(70, 89, 69);}
+ (id)green {vendColor(0, 255, 0);}
+ (id)greenWeb {vendColor(0, 128, 0);}
+ (id)pigmentGreen {vendColor(0, 165, 80);}
+ (id)rybGreen {vendColor(102, 176, 50);}
+ (id)greenYellow {vendColor(173, 255, 47);}
+ (id)grey {vendColor(128, 128, 128);}
+ (id)hanPurple {vendColor(82, 24, 250);}
+ (id)harlequin {vendColor(63, 255, 0);}
+ (id)heliotrope {vendColor(223, 115, 255);}
+ (id)hollywoodCerise {vendColor(244, 0, 161);}
+ (id)hotMagenta {vendColor(255, 0, 204);}
+ (id)hotPink {vendColor(255, 105, 180);}
+ (id)indigo {vendColor(0, 65, 106);}
+ (id)indigoWeb {vendColor(75, 0, 130);}
+ (id)internationalKleinBlue {vendColor(0, 47, 167);}
+ (id)internationalOrange {vendColor(255, 79, 0);}
+ (id)islamicGreen {vendColor(0, 153, 0);}
+ (id)ivory {vendColor(255, 255, 240);}
+ (id)jade {vendColor(0, 168, 107);}
+ (id)kellyGreen {vendColor(76, 187, 23);}
+ (id)khaki {vendColor(195, 176, 145);}
+ (id)lightKhaki {vendColor(240, 230, 140);}
+ (id)lavender {vendColor(181, 126, 220);}
+ (id)lavenderWeb {vendColor(230, 230, 250);}
+ (id)lavenderBlue {vendColor(204, 204, 255);}
+ (id)lavenderBlush {vendColor(255, 240, 245);}
+ (id)lavenderGrey {vendColor(196, 195, 221);}
+ (id)lavenderMagenta {vendColor(238, 130, 238);}
+ (id)lavenderPink {vendColor(251, 174, 210);}
+ (id)lavenderPurple {vendColor(150, 120, 182);}
+ (id)lavenderRose {vendColor(251, 160, 227);}
+ (id)lawnGreen {vendColor(124, 252, 0);}
+ (id)lemon {vendColor(253, 233, 16);}
+ (id)lemonChiffon {vendColor(255, 250, 205);}
+ (id)lightBlue {vendColor(173, 216, 230);}
+ (id)lightPink {vendColor(255, 182, 193);}
+ (id)lilac {vendColor(200, 162, 200);}
+ (id)lime {vendColor(191, 255, 0);}
+ (id)limeWeb {vendColor(0, 255, 0);}
+ (id)limeGreen {vendColor(50, 205, 50);}
+ (id)linen {vendColor(250, 240, 230);}
+ (id)magenta {vendColor(255, 0, 255);}
+ (id)magentaDye {vendColor(202, 31, 23);}
+ (id)processMagenta {vendColor(255, 0, 144);}
+ (id)magicMint {vendColor(170, 240, 209);}
+ (id)magnolia {vendColor(248, 244, 255);}
+ (id)malachite {vendColor(11, 218, 81);}
+ (id)maroonWeb {vendColor(128, 0, 0);}
+ (id)maroon {vendColor(176, 48, 96);}
+ (id)mayaBlue {vendColor(115, 194, 251);}
+ (id)mauve {vendColor(224, 176, 255);}
+ (id)mauveTaupe {vendColor(145, 95, 109);}
+ (id)mediumBlue {vendColor(0, 0, 205);}
+ (id)mediumCarmine {vendColor(175, 64, 53);}
+ (id)mediumLavenderMagenta {vendColor(204, 153, 204);}
+ (id)mediumPurple {vendColor(147, 112, 219);}
+ (id)mediumSpringGreen {vendColor(0, 250, 154);}
+ (id)midnightBlue {vendColor(0, 51, 102);}
+ (id)mintGreen {vendColor(152, 255, 152);}
+ (id)mistyRose {vendColor(255, 228, 225);}
+ (id)mossGreen {vendColor(173, 223, 173);}
+ (id)mountbattenPink {vendColor(153, 122, 141);}
+ (id)mustard {vendColor(255, 219, 88);}
+ (id)myrtle {vendColor(33, 66, 30);}
+ (id)navajoWhite {vendColor(255, 222, 173);}
+ (id)navyBlue {vendColor(0, 0, 128);}
+ (id)ochre {vendColor(204, 119, 34);}
+ (id)officeGreen {vendColor(0, 128, 0);}
+ (id)oldGold {vendColor(207, 181, 59);}
+ (id)oldLace {vendColor(253, 245, 230);}
+ (id)oldLavender {vendColor(121, 104, 120);}
+ (id)oldRose {vendColor(192, 46, 76);}
+ (id)olive {vendColor(128, 128, 0);}
+ (id)oliveDrab {vendColor(107, 142, 35);}
+ (id)olivine {vendColor(154, 185, 115);}
+ (id)orange {vendColor(255, 127, 0);}
+ (id)rybOrange {vendColor(251, 153, 2);}
+ (id)orangeWeb {vendColor(255, 165, 0);}
+ (id)orangePeel {vendColor(255, 160, 0);}
+ (id)orangeRed {vendColor(255, 69, 0);}
+ (id)orchid {vendColor(218, 112, 214);}
+ (id)paleBlue {vendColor(175, 238, 238);}
+ (id)paleBrown {vendColor(152, 118, 84);}
+ (id)paleCarmine {vendColor(175, 64, 53);}
+ (id)paleChestnut {vendColor(221, 173, 175);}
+ (id)paleCornflowerBlue {vendColor(171, 205, 239);}
+ (id)paleMagenta {vendColor(249, 132, 229);}
+ (id)palePink {vendColor(250, 218, 221);}
+ (id)paleRedViolet {vendColor(219, 112, 147);}
+ (id)papayaWhip {vendColor(255, 239, 213);}
+ (id)pastelGreen {vendColor(119, 221, 119);}
+ (id)pastelPink {vendColor(255, 209, 220);}
+ (id)peach {vendColor(255, 229, 180);}
+ (id)peachOrange {vendColor(255, 204, 153);}
+ (id)peachYellow {vendColor(250, 223, 173);}
+ (id)pear {vendColor(209, 226, 49);}
+ (id)periwinkle {vendColor(204, 204, 255);}
+ (id)persianBlue {vendColor(28, 57, 187);}
+ (id)persianGreen {vendColor(0, 166, 147);}
+ (id)persianIndigo {vendColor(50, 18, 122);}
+ (id)persianOrange {vendColor(217, 144, 88);}
+ (id)persianRed {vendColor(204, 51, 51);}
+ (id)persianPink {vendColor(247, 127, 190);}
+ (id)persianRose {vendColor(254, 40, 162);}
+ (id)persimmon {vendColor(236, 88, 0);}
+ (id)pineGreen {vendColor(1, 121, 111);}
+ (id)pink {vendColor(255, 192, 203);}
+ (id)pinkOrange {vendColor(255, 153, 102);}
+ (id)platinum {vendColor(229, 228, 226);}
+ (id)plum {vendColor(204, 153, 204);}
+ (id)powderBlue {vendColor(176, 224, 230);}
+ (id)puce {vendColor(204, 136, 153);}
+ (id)prussianBlue {vendColor(0, 49, 83);}
+ (id)psychedelicPurple {vendColor(221, 0, 255);}
+ (id)pumpkin {vendColor(255, 117, 24);}
+ (id)purpleWeb {vendColor(128, 0, 128);}
+ (id)purple {vendColor(160, 92, 240);}
+ (id)purpleTaupe {vendColor(80, 64, 77);}
+ (id)rawUmber {vendColor(115, 74, 18);}
+ (id)razzmatazz {vendColor(227, 11, 92);}
+ (id)red {vendColor(255, 0, 0);}
+ (id)pigmentRed {vendColor(237, 28, 36);}
+ (id)rybRed {vendColor(254, 39, 18);}
+ (id)redBiolet {vendColor(199, 21, 133);}
+ (id)richCarmine {vendColor(215, 0, 64);}
+ (id)robinEggBlue {vendColor(0, 204, 204);}
+ (id)rose {vendColor(255, 0, 127);}
+ (id)roseMadder {vendColor(227, 38, 54);}
+ (id)roseTaupe {vendColor(144, 93, 93);}
+ (id)royalBlue {vendColor(65, 105, 225);}
+ (id)royalPurple {vendColor(107, 63, 160);}
+ (id)ruby {vendColor(224, 17, 95);}
+ (id)russet {vendColor(128, 70, 27);}
+ (id)rust {vendColor(183, 65, 14);}
+ (id)safetyOrange {vendColor(255, 102, 0);}
+ (id)blazeOrange {vendColor(255, 102, 0);}
+ (id)saffron {vendColor(244, 196, 48);}
+ (id)salmon {vendColor(255, 140, 105);}
+ (id)sandyBrown {vendColor(244, 164, 96);}
+ (id)sangria {vendColor(146, 0, 10);}
+ (id)sapphire {vendColor(8, 37, 103);}
+ (id)scarlet {vendColor(255, 36, 0);}
+ (id)schoolBusYellow {vendColor(255, 216, 0);}
+ (id)seaGreen {vendColor(46, 139, 87);}
+ (id)seashell {vendColor(255, 245, 238);}
+ (id)selectiveYellow {vendColor(255, 186, 0);}
+ (id)sepia {vendColor(112, 66, 20);}
+ (id)shamrockGreen {vendColor(0, 158, 96);}
+ (id)shockingPink {vendColor(252, 15, 192);}
+ (id)silver {vendColor(192, 192, 192);}
+ (id)skyBlue {vendColor(135, 206, 235);}
+ (id)slateGrey {vendColor(112, 128, 144);}
+ (id)smalt {vendColor(0, 51, 153);}
+ (id)springBud {vendColor(167, 252, 0);}
+ (id)springGreen {vendColor(0, 255, 127);}
+ (id)steelBlue {vendColor(70, 130, 180);}
+ (id)tan {vendColor(210, 180, 140);}
+ (id)tangerine {vendColor(242, 133, 0);}
+ (id)tangerineYellow {vendColor(255, 204, 0);}
+ (id)taupe {vendColor(72, 60, 50);}
+ (id)teaGreen {vendColor(208, 240, 192);}
+ (id)teaRoseOrange {vendColor(248, 131, 194);}
+ (id)teaRose {vendColor(244, 194, 194);}
+ (id)teal {vendColor(0, 128, 128);}
+ (id)tawny {vendColor(205, 87, 0);}
+ (id)terraCotta {vendColor(226, 114, 91);}
+ (id)thistle {vendColor(216, 191, 216);}
+ (id)tomato {vendColor(255, 99, 71);}
+ (id)turquoise {vendColor(48, 213, 200);}
+ (id)tyrianPurple {vendColor(102, 2, 60);}
+ (id)ultramarine {vendColor(18, 10, 143);}
+ (id)unitedNationsBlue {vendColor(91, 146, 229);}
+ (id)vegasGold {vendColor(197, 179, 88);}
+ (id)vermilion {vendColor(227, 66, 51);}
+ (id)violet {vendColor(139, 0, 255);}
+ (id)violetWeb {vendColor(238, 130, 238);}
+ (id)rybViolet {vendColor(2, 71, 54);}
+ (id)viridian {vendColor(64, 130, 109);}
+ (id)wheat {vendColor(245, 222, 179);}
+ (id)white {vendColor(255, 255, 255);}
+ (id)wisteria {vendColor(201, 160, 220);}
+ (id)yellow {vendColor(255, 255, 0);}
+ (id)processYellow {vendColor(255, 239, 0);}
+ (id)rybYellow {vendColor(254, 254, 51);}
+ (id)yellowGreen {vendColor(154, 205, 50);}
+ (id)zinnwaldite {vendColor(235, 194, 175);}
@end

Read More
Posted in Categories, Cocoa Touch, iPhone SDK | No comments
Newer Posts Older Posts Home
Subscribe to: Comments (Atom)

Popular Posts

  • Making OpenGL ES Screenshot
    The Bit-101 Blog has an entry that shows how to take a screenshot when using OpenGL ES . I tested this in my much-delayed particle-generato...
  • Adding CLANG to Your Build Process
    Frasier Spiers has a nifty piece this morning on using Git pre-commit hooks to automatically run the CLANG Static Analyzer. I'm not a G...
  • CLANG Static Analyzer
    If you aren't using the LLVM/Clang Static Analyzer , you really should be. The Clang Project is an attempt to write a front end for the...
  • A Little Help
    I'm having a problem with OpenGL ES, and it's keeping me from finishing my particle engine post. I was hoping someone here could see...
  • WWDC Accommodations
    Staying downtown in San Francisco is very expensive in the summertime. Bu, if you're going to WWDC, you really want to stay downtown. Yo...
  • Xcode File Templates and a Mystery
    One of the things that confuses many newcomers to Xcode is how to set it up so that your company name gets automatically filled in when you ...
  • Brain Surgery?
    Craig Hockenberry has an interesting post on his blog today about the iPhone background processing issue. Craig speaks from personal experi...
  • Book's Almost Done
    I just finished Chapter 16. I'll give it another read-over in the morning then it will go off to my writing partner for his review, then...
  • iPhone Alley
    Looks like Dave and I are going to make an appearance on the iPhone Alley Podcast next week. We're recording on Sunday night, so I woul...
  • Shuffling Arrays
    Ever want to randomize an array of items? It's a task that, for some reason, I've had to do a lot in recent programs. So, I wrote a ...

Categories

  • 3D Models
  • Ad Hoc Distribution
  • ADC
  • Address Book
  • Amazon
  • Anaglyphs
  • App Store
  • Apple
  • Apple DTS
  • Apple Store
  • Application Store
  • articles
  • Award
  • Background Processing
  • Barcodes
  • Beta
  • Blog
  • Blogger
  • Blogging
  • Blogs
  • Blogspot
  • Book project
  • Bug Reporting
  • Captain Obvious
  • Categories
  • Censorship
  • CFFoundation
  • CGAffineTransform
  • Clang Static Analyzer
  • Cocoa
  • Cocoa Touch
  • Code Reuse
  • Code Signing
  • Computer
  • conferences
  • Controller Classes
  • Core Animation
  • Daring Fireball
  • Database
  • Debugging
  • Defect
  • Delegates
  • Design Awards
  • Developer Certifications
  • Discussion Forums
  • Edit Mode
  • employment opportunities
  • Encryption
  • Enterprise
  • Errata
  • free code
  • Free software
  • Full Screen
  • Game Programming
  • Gestures
  • Getting Started
  • goof
  • Google Code
  • Google Maps
  • Gotcha
  • Help
  • HIG
  • HTTP PUT
  • Idiots
  • Idle Timer
  • Images
  • Instruments
  • Interface Builder
  • iPHone
  • iPhone Applications
  • iPhone Dev Center
  • iPhone Developers
  • iPhone OS 3.0
  • iPhone SDK
  • iPhone SDK PNG
  • iPhone Simulator
  • iPhoneSDK
  • iPod
  • Job Opportunities.
  • k
  • Key Value Observing
  • Keynote
  • KVO
  • Landscape Mode
  • Learn Cocoa
  • Learn Cocoa on the Mac
  • libxml
  • Licensing
  • Mac Developers
  • Mac OS X
  • Macworld Expo
  • Microsoft
  • NDA
  • NeHe
  • New Category
  • New Release
  • NSFileHandle
  • NSMutableArray
  • NSMutableURLRequest
  • NSXML
  • Object-Oriented Design
  • Objective-C
  • Open Source
  • OpenGL ES
  • Optimizations
  • Other blogs
  • Paired Arrays
  • Parsing
  • Particle Engine
  • Party
  • PeopleSoft
  • Performance
  • Persistence
  • Pink Screen of Death
  • Piracy
  • Pixar
  • Podcasts
  • Press Release WTF
  • Press Releases WTF
  • private APIs Google
  • Project Template
  • Properties
  • Random Numbers
  • Rant
  • Rejected
  • Resources
  • Responder Chain
  • REST
  • Reverse Engineering
  • Rumors
  • Runtime
  • Sample Code
  • Screencast
  • screenshot
  • Scroll Views
  • snippet
  • Snow Leopard.
  • SOAP
  • Sockets
  • Source
  • Splash Screen
  • SQLite
  • SQLitePersistentObjects
  • Steve Jobs
  • Steve-Note
  • Strings
  • Stupidity
  • Subversion
  • Table Views
  • Taps
  • Template
  • Tip
  • Tips
  • Tririga
  • tutorials
  • Twitter
  • UIAlertView
  • UIColor
  • UIImage
  • UIPickerView
  • UIScrollView
  • UITextField
  • UIView
  • UIWebView
  • Update
  • Utilities
  • UUID
  • Vacation
  • Version Control
  • Web Services
  • Writing
  • WTF
  • WWDC
  • Xcode
  • XML

Blog Archive

  • ►  2009 (141)
    • ►  May (14)
    • ►  April (30)
    • ►  March (48)
    • ►  February (26)
    • ►  January (23)
  • ▼  2008 (163)
    • ►  December (46)
    • ▼  November (25)
      • Shameless Post
      • Scratch That
      • A Novel Business Model
      • iPhone Alley
      • Adding Photos to iPhone Library
      • iPhone SDK & OS 2.2 is Out
      • Very Nice
      • "Officially" released
      • Daring Fireball on Google's use of Private APIs
      • Book is Shipping
      • Creating Transparent UIViews - a Rounded Rect View
      • A Note on Code Samples
      • Testing Code Signing
      • More Colors, More Compact
      • If you're in the Bay Area
      • Craig Hockenberry on Debugging again
      • Great Core Animation Project
      • Another Category on NSString
      • Captain Obvious Strikes Back
      • Test Code Formatting Post
      • TouchFighter
      • A Blog about Preventing iPhone App Piracy
      • Changing Application Name
      • Xcode File Templates and a Mystery
      • Interesting Blog
    • ►  October (44)
    • ►  September (2)
    • ►  August (5)
    • ►  July (2)
    • ►  June (9)
    • ►  May (2)
    • ►  April (11)
    • ►  March (17)
Powered by Blogger.

About Me

Unknown
View my complete profile