Ad

Our DNA is written in Swift
Jump

iPad Smiles

A friend/coachee of mine teased me with a picture showing him in loving embrace with this new iPad. I will be a couple more weeks until I can actually purchase one for myself. So I figured, I would want to give several developers that read my tweets and blog articles a change to show off their new iDevice as well.

We Europeans have a bit more waiting time, especially guys from smaller countries who want the iPad just the same, but have to bear Apple’s worldwide rationing of iPads due to initial touch panel shortage.

Stefan Sorin Nicolin, from Spielhaus FTW, illustrates for us the general mood amongst non-US-would-like-to-be-iPad-developers. He still has to imagine their famous Today ToDo app running on the shiny thing.

But for some the motto of this article is the opposite …

Smile! You’re Actually Holding an iPad!*

* …and are ENVIED by most of the rest of the world

Read more

4 iPad App Makers Share Their Development Experiences

Having some contact with developers around the globe allows me (and by extension YOU, my dear reader) a glimpse of what kind of apps are going to become available with the iPad on April 3rd. More importantly, we can ask those busy developers – who struggled to be first in the launch line-up – what they thought were the difficult steps in designing and building iPad apps.

Being the good soldiers that we are, we let them have the glory from being first while being able to learn from the problems that the one or other Apple mine would have caused them. Maybe this way we can save ourselves some grief and frustration if we can avoid their mistakes from the get go.

So here are 5 of the first iPad apps and what their developers learned from making them.

Read more

The Doctor is out

I’ll be OOO during the next two weeks. I’m conducting an iPhone programming course for Vienna based Training company NOW Training.

The first day already occurred last Friday and I so far all participants seem really happy with my style of introducing them into the wild world of OOP with Objective-C.

I’ll be checking my iPhone’s inbox infrequently and in the evenings. But please be patient if I don’t respond right away to emergency code triage requests. 😉

How to Shrink Cells

When you look at the Contacts.app you see that Apple somehow manages to change the size of cells in UITableViews of grouped styling.

Original:

Copy:

If you search around on the internet most of the solutions getting such a look revolve around making your own UIView and adding this as headerView to a section. Now if you want the cell on the right side to still behave like a cell is expected to behave then you have lots of work ahead of you. So I consulted the twitterverse and here props have to go to Jason Terhorst who hit the bull’s eye:

If I recall correctly from Apple’s example code, they just clear the background, and redraw that rounded rect at new size. It’s been a while since I did this, but I think I swapped in my own custom backgroundView.

I researched and experimented for a day to get it perfect. What follows is a description of how to pull off this magic trick, so you can do so too. The end result will look like this:

(Heart Icon by DryIcons)

Read more

Making a Control

At times you may find that you need a control that has not yet been provided for you. In my case I needed a star rating control for iWoman. Ladies will be able to star their love encounters. And the way how such a thing is done nowadays is via selecting between 0 and 5 stars. (If you now ask me to rig it such that your girl can only rate you with 5 stars, then I’ll bitch-slap you)

So I decided to make a UIView that would take UIImages for empty, half-full and full stars. Also I wanted to have some customizability like different numbers of stars and to be able to turn half-full stars on and off. That’s where I created multiple properties so that these values can be set from outside the instance. The steps are always: instance variable (“IVAR”), @property, @synthesize and if the property is a retained object then a line in dealloc.

I made this YouTube video to give you a demonstration and guided tour of DTStarRatingView.

Read more

Dr. Touch #15 – "Sex App Transmittable Diseases"

With the sex apps removed Apple does not think we need protection any more. And lots more iPad-News.

Show notes (aka my script) after the break.

Read more

Stuff you learn from reverse-engineering Notes.app

I’m adding note taking to iWoman 2.0 and so I was thinking which metaphor would be one that users would understand and like. So I decided to mimic the look and feel of the built-in Notes app.

There where quite a few interesting things I had to learn and figure out and in this article I am going to share them with you. These are techniques that you can use in many other scenarios besides of making your own Notes view controller.

I was clear from the start that I needed to use a UITextView for the editing itself. Notes.app has several specialities that we have to figure out if we want to capture the look.

  • Font is Marker Felt Thin, Size 19.
  • each line sits on top of a grayish blue horizontal line
  • the text view has a padding at all sides, something that the standard UITextView does not give us
  • There is padding at the top, but still the text goes up to the corner
  • the horizontal lines move together with the text and never end towards the bottom
  • two static vertical brown lines line up with markings at the top and the bottom
  • the body of the notes is not just a yellow gradient, but has some structure and speckles
  • scrolled text disappears behind the images for the top and bottom edge
  • The text view needs to be dynamically resized when the keyboard appears or disappears to prevent hiding of text.

Those where the challenges, in this YouTube video you see my solution and an overview of how I achieved it. More in-depth reasoning you find below.

Read more

Timing is Everything

zeke817 asks:

Hey guys just wondering how to put a timer in the appdelegate. I need a timer to keep playing on through multiple views instead of just playing on 1 view. Any help apperciated

Using timers is pretty simple. There are plenty examples around and it’s not difficult to understand. Having said that, I am responding to this question for three reasons:

  1. my posts on my blog have been pretty scarce recently due to lots of programming for customer projects
  2. I think I should at least document how I am using timers so that I can refer people to this post when the question arises again and again.
  3. Explaining a simple thing to somebody else is the best way to train clarity in teaching.

Generally speaking timers are not instantiated but scheduled. The difference is that the SDK/OS takes care of their memory management and we only have to worry about whether or not we want them to fire. So we don’t need to ever release a timer, instead we invalidate it.

Read more

Filtering Fun with Predicates

Being present longer than iPhone OS exists on the Mac platform NSPredicate was only introduced to us iPhone developers in Version 3.0 of the SDK. They have multiple interesting uses, some of which I am going to explore in this article.

You will see how you can filter an array of dictionaries, learn that the same also works for your own custom classes. Then we’ll see how to replace convoluted IF trees with simple predicates. We’ll explore how to use predicates to filter entries of a table view and finally peek into the inner workings of predicates.

Being simple and powerful at the same time it took me 3 hours to write this article. I hope you don’t give up halfway through it, because I promise it will be a great addition to your skillset as iPhone developer.

Read more

Directories: Temp, Cache, Documents

The first thing to learn when starting to persist data onto the iPhones solid state drive is that all apps have their own sandbox. Contrary to other operating systems where you have a shared documents folder, you have several directories for each individual apps. Now on the iPhone these sandbox directories all get a GUID in their name, so you have no way to hardcode or guess the real path they will end up on.

Luckily there is a method of getting the path for those directory, which I wrote about about a year ago: Getting Standard Paths. Today I will elaborate a bit on what I learned since then, it turns out that this is only half the story and as intermediate programmer you will want to use the correct kind of folder for each task.

Read more