If you know anything about Dribbble, the entire theme of the site is basketball driven despite being a design site. The basketball terminology fits well and adds a unique spin unlike many similar sites of its ilk in the past. With that in mind, Balllin’ is a spin-off rather than an imitation of the style that Dan and Rich have set for Dribbble. It was really fun to “rebound” the mood of the site. Even with the name of the app, I threw around a few names like Disssh, Bouunce, but ultimately who could resist such a fun and go-lucky name as Balllin. Playing off the foundation set seemed natural. Even the name of this blog post wrote itself. I can’t go without mentioning the people who helped out on the project. Eachindividualparty I worked with took their part of project a step farther in some way or another that really made the project special. I can’t credit them enough.

My wish for the app is to have built something that will excite the core audience. Something that will become an invaluable utility and change the way dribbblers interact with Dribbble. Even with a nice mobile web version of the site available, I hope Balllin’ once again proves that native apps provide the best experience for end users. As an iOS developer, if I can’t don’t that, I’ll need to reevaluate my livelihood.

If you’ve been counting thats two apps this summer. If feels good to ship. I’ve created the Kangaroo Bandit brand as a cheerful and fun way to put out fun little apps like this one. I don’t have any plans for other apps at the moment, but I do plan to continue to improve Balllin’. In fact, if you like the app and want certain features, please email Dan and Rich and urge them to continue to build out their API. Without the API, this app couldn’t exist.

So how do you go about creating a custom look and feel to your application? Do you need to roll your own UINavigationController? Thankfully, no. With method swizzling you can substitute function implementations for certain functions like drawRect: and easily create a very custom look. Swizzling methods creates a smaller code footprint compared to subclassing the current structure or implementing your own. I’ve created a working example of how to achieve a unique navigation style with my open source framework (see the demo project) but I’ll highlight a few snippets here to give you an idea of how things work.

Swizzling the Navigation Bar

For UINavigationBar and UIToolbar, drawRect is responsible for creating the background so swizzling this function will allow us to provide a new function to draw the background. By swizzling the method, we can also call the default implementation of a function too which is really nice if you only want to change the look of one style and not the others (ie. the default style and not the translucent style ).

Use this snippet of code in your main.m file for your project. The UINavigationBar’s drawRect: selector will be replaced as soon as the application launches. Now we need to go ahead and create a category (again, more objective-c trickery) for UINavigationBar to append a new draw function to the class.

Setup Custom Buttons

By now you’ve realized that changing the navigation bar did little to change the appearance of the buttons. Using - (id)initWithCustomView:(UIView *)customView to create custom buttons is fine but what about those pesky back buttons? They need to fit in with the new UI look too. To create a custom back button, we can subclass UIBarButtonItem and swizzle the UINavigationController push method. The subclassed bar button I’ve created closely imitates the current bar buttons so you can easily swap interface art.

This function will set the left navigation item of the new controller if the previous controller has setup a custom back button. The tkBackButton property is declared in TKViewController.

As a mentioned earlier, an important aspect was to provide a solution that worked as seamless as possible. The solution I’ve provided doesn’t require subclassing UINavigationController or for you to implement your own navigation controller. Although I needed to subclass UIViewController for a back button, you don’t have to provide a lot of code to existing classes to comply with the new changes. As a developer, the goal is always to cleanly leverage existing frameworks as much as possible before creating your own solution.

]]>http://devinsheaven.com/create-a-custom-uinavigationbar-style/feed/27http://devinsheaven.com/create-a-custom-uinavigationbar-style/May Interview for iPhone App Entrepreneurhttp://feedproxy.google.com/~r/devinsheaven/~3/kQ6WP1oKbMo/
http://devinsheaven.com/may-interview-for-iphone-app-entrepreneur/#commentsSun, 07 Nov 2010 00:00:52 +0000Devinhttp://www.dr-photoshop.com/test/?p=1031Attic is a very unique idea – something that’s hard to achieve in the music controller/player market. Do you have any tips or insight into how you came up with the idea, and how other developers can brainstorm and select ideas effectively?
When iPhone OS 3.0 came out, I spent a lot of time looking into the new additions to the SDK. I looked into a bunch of the new APIs like the maps and mail composition. The music API was appealing because the data was there. People have music on their iPhones. With something like maps, you need your own map information. I initially made a simple application to explore not only the music API but the mult-touch gestures and the shake notifications. That application turned into something similar to the photo flicking apps on the app store where you can throw around and rotate album covers. Writing that application helped me learn a lot in many different areas. I then set my mind on creating something that could be a worth while application. I watched the Apple developer videos on the ingredients of a good iPhone application. I knew Apple had already made a great player for your entire collection so I knew I had to make the application achieve a specific goal. After looking further into the API, I came up with the concept of Attic. My product definition statement read as such: easy to use application to find albums in your library that aren’t played often. For people like me that like to listen to entire albums at a time, this concept was exciting.

Attic had a great launch, and gained coverage from a number of different news outlets and blogs. How did you handle promotion around the launch, and which methods (or links from certain sites) brought you the greatest interest and sales?
The launch was crazy. I released the application on March 1st. I stayed up all night just to make sure everything went smoothly. I sent out press releases with promo codes to a list of blog sites that morning. I started to see a bunch of mentions on Twitter and I knew something organic was happening. I was surprised how fast it was too. John Gruber picked up on the application and linked to it on his site. That brought tons of traffic. I never sent a press release to him either. In retrospect, I wasn’t aware of how fast people picked up on the application.

Attic was produced as a collaboration with Taptivate. I wondered how this process worked, and why you chose to work together. Which different aspects of the application were each of you responsible for?
I had Attic at a point where I could have released it to customers, but I wasn’t happy with how everything worked. I saw Taptivate had a hit with Postman and then Voices so it made sense to reach out to them to see what they could bring to the table in any regard. They helped change the way the application functioned in a way I had imagined but never realized until they came along.

How important do you feel App Store ratings are, and what can developers do to aim for a high rating?
Ratings have some role in whether customers will purchase the application. How much is hard to tell. Who knows if the majority of customers even read the description or just look at the screenshots. A few things developers can do to get higher ratings is to educate customers better before and even after they purchase the application. A higher price can mean higher reviews too because customers are more likely to inform themselves of the product before purchasing. If they know what the application does before they purchase it, you’ll more likely meet their expectations. Application bugs are obvious reasons for getting lower ratings too.

If you could offer one piece of advice to aspiring iPhone app developers, what would it be?
I would suggest that if you want to make a profit as a developer (and who doesn’t), you have to look at the application development as a business. Coding the application is half the battle. You need to invest in developing a product. Figuring out what customers want and creating awareness for the application is something that needs a lot of consideration. Find people that can help achieve your goals. There are so many business models you can consider now too. The iPhone landscape is always changing so you have to work quickly and adapt.

]]>http://devinsheaven.com/may-interview-for-iphone-app-entrepreneur/feed/1http://devinsheaven.com/may-interview-for-iphone-app-entrepreneur/A few words on Apple's Retina displayhttp://feedproxy.google.com/~r/devinsheaven/~3/J3kiIOOGaWg/
http://devinsheaven.com/a-few-words-on-the-retina-display/#commentsTue, 22 Jun 2010 09:03:04 +0000Devinhttp://devinsheaven.com/?p=854The 300+ dpi resolution is normally reserved for print material not computer displays. Certainly a higher resolution display is a pitch to make a screen appear more like a piece of paper. If you’ve followed any of the mac rumor fodder throughout the years, scaling the user interface was kicked around before iPhone publicly existed. During his recent interview at the All Things D conference, Steve Jobs talked about “biting the bullet” and starting from scratch when it came to developing a touched based device. It’s clear Apple was preparing resources and new technology intended for iOS years before the iPhone and iPad saw the light of day. With mac software ousted from the ADA (Apple Design Awards) and emphasis on the platform waning, who knows if macs will ever ship with higher resolution displays.

Retina display is a win for the iPad too

While the iPad doesn’t sport a retina display (yet), building applications that support twice the resolution means that iPhone applications run at twice the resolution won’t pixelate like they do now on the iPad. The one pixel drop shadows will still look awkward because they will be two pixels instead of one, but the text and images won’t look as jagged as the do now. Don’t get too excited though, the iPad doesn’t run pixel doubled iOS 4 apps yet but I wouldn’t be surprised to see it supported in the next software update.

]]>http://devinsheaven.com/a-few-words-on-the-retina-display/feed/1http://devinsheaven.com/a-few-words-on-the-retina-display/Turn the iPhone Nuts; improve performancehttp://feedproxy.google.com/~r/devinsheaven/~3/JdcW9EappQg/
http://devinsheaven.com/turn-your-iphone-wacky-and-make-your-iphone-application-better/#commentsWed, 03 Mar 2010 05:48:47 +0000Devinhttp://devinsheaven.com/?p=520 Instruments, Xcode’s tool to track and analyze your application’s process, has a cool little feature that lets you turn your iPhone’s screen into a sea of red and green that came straight out of Microsoft Paint. To turn this little feature on, open up instruments and create a Core Animation instrument for the iPhone. Click on the detail view icon in the bottom left of the window, and a bunch of debug options will pop up. Check the Color Blended Layers box. Now you have a good April fools prank, but this view is actual helpful when it comes to optimizing your iPhone animation performance.

The key to this color blended layers is simple – green is opaque (good), red is transparent (bad). If your application has a table view, and you are scratching your head wondering why the table doesn’t scroll like butter, look no further than this filter (okay, make sure you reuse cells too). If you can turn your views from transparent to opaque (turning red to green) you’ll notice your table start to scroll a lot smoother. Tuning your application to animate with ease is an acquired skill. You really have to play around and see what will run smoothly. Of course, there are pros and cons to many decisions you’ll make. In terms of animation performance, the more you eliminate transparency, the greater the performance.

I happy to announce the shipping of Attic [iTunes Link]. Starting today, March 1st, you can find Attic on App Store shelves everywhere for $1. In a nutshell, Attic is a super cool music controller for playing those old dusty neglected albums in your iTunes music collection. Plain and simple. To mark the launch, I’ve got a few new articles written to publish this week. I’ll also be sharing my experiences promoting the application and everything that comes with that. I’ve got other exciting things in the works I’d like to share, but I’ll keep quiet on those things in the mean time.

Pop Apps vs. Niche Apps

After a few months on the App Store shelves, Time Keeper hasn’t gotten a boat load of downloads. Currently the application gets around 10 downloads a week. This is fine though because the application isn’t a “pop app”. Its not intended for a large audience because not everyone will find it useful. The small group of people who have downloaded the application have given a great response for the application. I received emails from people in various situations – a student who runs track in high school uses TK to record his times for events that he competes in, a man who records swimming times for his daughters at competitions. These are the situations I imagined Time Keeper being used for, and they have slowly materialized into reality. For that reason, I find Time Keeper a successful application despite not having a ton of sales. The price of the application also reflects the realization that not everyone will be in the market to purchase the application.

Getting Feedback

Because the application has a higher price than many applications, I wanted to assure users that I’d be able to provide assistance to their problems and listen to their suggestions. A swimmer suggested that times should be recorded to not just the tenth of a second, but to the hundredth of a second. Soon after I implemented this change into the application. I wanted to create an avenue so that users could supply feedback and limited the barrier that might stop a customer from supplying feedback. From day 1, I setup a Get Satisfaction account for the application and allow users to email me feedback directly from the application.

App Store’s Role

Despite the grumblings of the App Store, the way apps are distributed on the iPhone makes it possible for niche apps to get sales. As a developer, I haven’t had to advertise the application or setup my own payment system. Consumers also can trust that when they purchase an application that it has been vetted and they won’t be scammed. Consumers don’t need to hassle with entering their information each time they want to purchase an application. The App Store simply gives niche applications more credibility and exposure.

Three20 by Joe Hewitt. Hewitt wrote this library as a result of developing the Facebook iPhone application. Despite the popularity of the facebook application and the framework, he has sign said he’s done developing applications for the iPhone. This library is very extensive, but Photo Thumbnail browser and tab interface (like the Facebook application) stand out.

Twitter Engine by Matt Gemmell. This engine will have you grabbing twitter messages and parsing twitter information in no time. The engine is built to be used for Mac and iPhone applications. Popular applications like Twitterific take advantage of the engine in their own application.

FontLabel. The iPhone only comes equipped with a small list of fonts installed on the iPhone. With FontLabel, you can include .tff font files inside of your application resources and use the font like it where any old font in the application.

Tapku Library. Call me bias for pointing out my own library, but I think this framework has some useful classes to help development. Update: I’ve recently added a coverflow class, along with a calendar and graph views.

SciFiHiFi by Buzz Anderson. This framework is a small bunch of utility classes for UI and security. The UI portion has classes for loadingHUD and cells classes for showing activity and editing. The security class allows you to add usernames and passwords to the keychain.

OpenFlow. This framework replicates the cover flow API that you see in applications like the iPod/Music app. Apple doesn’t provide a cover flow view in the SDK itself, so this framework comes in handy. (Check out my implementation of coverflow in the Tapku Library)

Frameworks are really valuable to the community because they build on an already powerful SDK. The more developers can contribute, the better applications become and the more powerful application can become.

]]>http://devinsheaven.com/6-useful-iphone-frameworks-you-should-use-in-your-application/feed/6http://devinsheaven.com/6-useful-iphone-frameworks-you-should-use-in-your-application/Figuring out capabilities and API availability on a user's iPhone or iPod Touchhttp://feedproxy.google.com/~r/devinsheaven/~3/yTCPVcYmJxI/
http://devinsheaven.com/figuring-out-capabilities-and-api-availability-on-a-users-iphone-or-ipod-touch/#commentsWed, 30 Dec 2009 12:00:57 +0000Devinhttp://devinsheaven.com/?p=448You’re first inclination might be to use the UIDevice class to check which device and OS version is installed. This means you have to remember when certain APIs were added and which device have which feature. Instead, you can check the presence and capabilities of a framework by asking for the framework class outright in your code. Apple has implemented class methods in each API to tell if the device has the specific functionality you are looking for. Here are a few example using the mail and camera capabilities:

Mail Composition

There might be a time when you need to send out a message through email. In versions prior to iPhone OS 3.0, you had to specifically open the mail application to access send an email. Now in iPhone OS 3, if a user has set up their account, you, as a developer, can imbed a modal view to send emails.

Camera Capabilities

There isn’t a camera in the iPod Touch, but that doesn’t mean there won’t be one in the future. If your application checked whether the device was an iPhone or iPod Touch, and Apple released a iPod Touch with a camera, your app would be inaccurate. With this code below, you don’t have to worry about new devices in the future.