Creating a UIImage from a CGLayer

CGLayers are great for drawing - especially when things need to be drawn over and over again. Converting a CGLayer to a UIImage is another story, though. NetSketch uses CGLayers for the drawing canvas, but converts them to UIImages when you go to upload your drawing or email it to a friend. The code below shows how it's done. The CGLayer is drawn into a bitmap CGContext of ... More...

Safari-style iPhone Checkbox

I was finishing up work on an iPhone app earlier today and needed to add a check box to the interface. Interface Builder provides a "checkbox-ish" control that slides between "On" and "Off" states but it didn't fit in well with the rest of the app. I needed a smaller one like the one that Mobile Safari provides for web forms. It was pretty easy to create using a ... More...

NetSketch mentioned on Digg!

Check it out! I was looking at Digg this morning and noticed a post about "Apple iPhone Art." It points to an article in the Telegraph with a gallery of art done by Steve Sprang, the author of Brushes. The description on Digg mentioned NetSketch, though. Kind of cool to see it on the front page! More...

A cheap math app - not a good idea?

Earlier this month, I put the finishing touches on Mathomatic and published it to the App Store. Mathomatic is a pretty small app for doing symbolic math. I needed it for a class I took in Signal Processing, and I figured it'd be useful to others as well. It expands and simplifies complex polynomials, takes derivatives and integrals, and a couple other cool things. I built it around ... More...

Custom UIWebView Navigation Controller

Download Drill Down Example + Controller Source (1.6MB .zip) The next version of NetSketch will include a community browser, allowing you to view uploaded drawings, watch replays, and leave comments without leaving the app. When I started working on the community interface, I looked to other apps for inspiration. Almost every app I've used on the iPhone use a sliding navigation scheme, giving you the feeling that you're drilling down ... More...

Stopping a Runaway WebView

It turns out, all of the WebViews you create on the iPhone are managed by a central object called WebCore. It seems to be some sort of singleton that takes care of loading content and managing resource loading threads - but it can lead to some interesting problems if you try to rapidly create, display, and release a series of WebViews. The upcoming version of NetSketch uses WebViews to ... More...

The NDA is gone!

Apple has finally removed the NDA from non-beta iPhone software, so the community can finally come out of hiding. I can't wait to actually - you know - talk to people! I've got a few things in the pipes for NetSketch, and hopefully I can post some tutorials and info here. Then this blog might actually be useful... - Ben More...

NetSketch drawing on a shirt!

l0k1 posted a picture of this t-shirt in the NetSketch forums yesterday - made from a NetSketch drawing by another artist. Pretty cool! It's nice to see stuff like this get put to use - I wasn't sure anybody was actually using the "Download to Illustrator" option on the site. Seeing stuff like this really makes it worth going the extra mile for features like that. The shirt ... More...

Finally…

I broke a lot of stuff this weekend working on NetSketch. I'm not all that familiar with threading, and I wanted to add some progress indicators for long redraws. I ended up doing it a couple times, but it finally works. (You can cancel it half way through the redraw process and everything). For the longest time it was leaking memory, but it turns out I just forgot ... More...

Another great review!

I did a Google search for NetSketch a couple minutes ago (c'mon - I have to do it every day, right?) and I found this great review: http://www.appleiphoneapps.com/2008/07/review-netsketch/. 4.75 stars out of 5! I'm psyched :-). It's a bummer that the App Store pushes traffic off the web into iTunes, because I think people don't read a whole lot online about the apps they buy. Could be wrong ... More...