UIView with Rounded Corners

Sooner rather than later, you’ll probably end up with a simple yet tricky requirement: an UIView with rounded corners.

iOS SDK has no ‘radius’ property. Ohhh wait!. Yeah, it actually has!. But the catch to it is that you need to import Quartz framework, first:

[cc lang=”objc”]
#import
[/cc]

Also, you need to link the ‘QuartzCore.framework’. Otherwise the import won’t work.

So… how do you actually display an UIView with rounded corners?. Easy!

[cc lang=”objc”]
[_someView.layer setCornerRadius:6];
[/cc]

See?. Just a line of code. Kung fu isn’t about a lot of spaghetti code. It’s about knowing what to do!

Removing Push Notifications from NotificationBar

I have come up with a weird problem…. which goes as follows:

  1. The app receives a Push Notification.
  2. You tap over the PN (in the iOS notification center).
  3. The app gets launched… and you handle the notification
  4. Problem: the notification remains in the ‘notification bar’.

How do you clean it ?. Well… this isn’t in Apple’s docs. But i’ve figured out that if you execute the following line of code, the notification ‘gets acknowledged’:

[cc lang=”objc”]
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
[/cc]

Nice, ha?.

 

JSON Parsers

XML days are numbered…. it’s just my opinion. I know, it’s out there in the wild, almost everywhere. But XML itself has a huge overhead, which is something we, as mobile software developers, really want to avoid.

Personally, i just love json. It’s extremely lightweight… and i dare to say, it is what XML should have been. Why is it exactly that you need to repeat a keyword once and over and over…???. I still don’t get what those guys were thinking… when they wrote the XML specs.

Allright. Enough with bashing outdated standards!. How do we parse / serialize JSON ?.  Apple itself has a parser / serializer. But there are faster alternatives.

NXJson was written by a friend of mine. Although it’s not the fastest parser out there, it’s pretty amazing. Go get it, it’s under MIT license, so you’re free to use it anywhere. And good news… it also works on Mac!

The second alternative is JSONKit. That is indeed the fastest parser in the market. Which one to get?. Both are free… just download them both, and study their source code. That’s the coolest thing about open source. Your skills can increas substantially just by reading other’s work.

And at some point… we should return something to the community…!!.

HTML Color to UIColor

This is a nice tool i’d like to share with you. While skinning your app, you might need to convert HTML color codes into those that are actually accepted by UIKit framework (which, by the way, is HEX!).

So… you need to fire Photoshop, or find a website that does that for you. Well, i just found a nice app called HexColors. It’s in the Mac AppStore, and it’s free (go get it!).

It allows you to convert html colors, straightforward, into an ObjectiveC NSColor… which, by the way, looks like this:

[cc lang=”objc”]
[NSColor colorWithCalibratedRed:0xFF/255.0 green:0xFF/255.0 blue:0xFF/255.0 alpha:0xFF/255.0]/* FFFFFFFF */
[/cc]

So… if you’re also working on iOS, you just need to weak that sentence to look like this:

[cc lang=”objc”]
[UIColor colorWithRed:0xFF/255.0 green:0xFF/255.0 blue:0xFF/255.0 alpha:0xFF/255.0]/* FFFFFFFF */
[/cc]

I know. That’s an extra step you have to take. There is also another version that actually has UIColor support, but it’s a paid app… and… i don’t mind replacing two words… it’s not THAT much, right?.

I hope you find it useful!

UITableViewCell without borders!

Suppose that you have an UITableView with a borderColor. Everything is cool and easy… as long as you don’t need to break the mold.

But if you ever need to add just ONE single cell without borders, you’ll notice that there is no way to do it. Well, it turns out that there is. But it’s not a straightforward one. You simply need to do this:

[cc lang=”objc”]
UIView* emptyBackView = [[UIView alloc] initWithFrame:CGRectZero];
[cell setBackgroundView:emptyBackView];

[emptyBackView release];
emptyBackView = nil;
[/cc]

Magic, ha?. If you add an empty backgroundView (with its background set to clearColor), the cell’s border will be gone.

I’ve been using this trick since iOS 3.1.2 times… and it’s still valid for iOS 5.1, so go ahead, and get rid of those borders!