Spark Inspector (US$39.99 single-license) offers an exciting new development tool. Targeting devs looking to refine their user interfaces, it enables you to interactively tweak view properties like frames and layers.
The app centers around an Interface Builder-like experience, with familiar-looking attribute and size inspectors. If you're comfortable in Xcode 4, you'll easily find your way around this tool.
In addition, it provides a custom layer inspector -- one that could (and, honestly should) inspire Apple. It enables you to update layer attributes like shadows and transforms, while viewing the results in real time.
Perfect for devs who otherwise write their interfaces in code (I am guilty as charged), it breaks out of the tweak-build-run loop that takes up so much time and energy in the normal development day. Instead, you apply your tweaks within the app itself, adjusting the interface until it looks just right.
This is the point at which Spark Inspector displays its one big weakness (keep in mind that it's still in development). Instead of producing an updated XIB (which would be okay) or PaintCode-like Objective-C output suitable for re-integration to your apps (which would kick ass), you take responsibility for transferring values back to your Xcode project.
Honestly, It's not a huge deal -- especially when your tweaks change a constant from say 50 to 58.5 -- but it's something that could be a killer feature in future updates. For now, you make notes of what values worked best for you. And no, there's no "bookmark this UI for later comparison" option either, another thing I would have liked to have seen.
One of Spark Inspector's nicest features is its 3D extrusion display. This pushes views out in parent-child hierarchies, letting you explore and select items with more tangible visualization than you get in IB.
Spark Inspector also offers a notification inspector, which may be useful for some devs. If you're already writing your UIs from code, however, you probably know how to set up a listener that logs notifications.
Setup is easy. There's a setup assistant for configuring Xcode projects, or (if you're paranoid like I am) add both the SparkInspector and libz frameworks to your dev builds, making sure to enable the -ObjC flag in Other Linker Flags. Include the SparkInspector header as such:
and enable the inspector in your application delegate, typically in application:didFinishLaunchingWithOptions:
Make sure you test using the simulator, and not (as I first tried) on device. The standalone Spark Inspector app (DMG) must be running. As soon as your app hits the "enable observation" stage, it seamlessly connects to the inspector, and you're ready to test and tweak.
For forty bucks, this promises to be a valuable tool that many devs will benefit from. If you'd like to kick the tires before you buy, there's a free 30 day trial available on the Spark Inspector website. If you do decide to buy, you purchase directly from the vendor.