<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paul Solt</title>
	<atom:link href="http://paulsolt.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://paulsolt.com</link>
	<description>Putting the Inc back in Solt since 2005.</description>
	<lastBuildDate>Fri, 03 Feb 2012 05:04:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Creating NSDocument using Folder Bundles and UTI Identifiers</title>
		<link>http://paulsolt.com/2012/02/creating-nsdocument-using-folder-bundles-and-uti-identifiers/</link>
		<comments>http://paulsolt.com/2012/02/creating-nsdocument-using-folder-bundles-and-uti-identifiers/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 05:04:16 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[Mac OSX]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Mac Developer]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[NSDocument]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1239</guid>
		<description><![CDATA[<p>I&#8217;ve been working on a Lion NSDocument-based application that deals with multiple data files. I decided to work with the NSFileWrapper and treat a folder like a single file. (i.e. Xcode Project Files .xcodeproj) I wanted to get an icon to display for the folder and to have it appear as a  single file on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a Lion NSDocument-based application that deals with multiple data files. I decided to work with the NSFileWrapper and treat a folder like a single file. (i.e. Xcode Project Files .xcodeproj) I wanted to get an icon to display for the folder and to have it appear as a  single file on Finder. In the NSDocument you need to implement the two save/load methods to get started and then you need to edit your Info.plist file.</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">- (<span style="color: #703daa;">NSFileWrapper</span> *)fileWrapperOfType:(<span style="color: #703daa;">NSString</span> *)typeName</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">                               error:(NSError *<span style="color: #bb2ca2;">__autoreleasing</span> *)outError {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">    // Save data here ...</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">}</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;"></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">- (<span style="color: #bb2ca2;">BOOL</span>)readFromFileWrapper:(<span style="color: #703daa;">NSFileWrapper</span> *)fileWrapper</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">                     ofType:(<span style="color: #703daa;">NSString</span> *)typeName</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">                      error:(NSError *<span style="color: #bb2ca2;">__autoreleasing</span> *)outError {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">    // Load data here ...</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;">}</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo;"></pre>
<h2><strong>Problems</strong></h2>
<p>There&#8217;s a few gotchas with the .plist file. In order to create a NSDocument using Folder Bundles you&#8217;ll need to set the UTI Identifier for the Document  Type and the Exported/Imported UTIs. You&#8217;ll find this setting on the Info page for your Xcode Target.</p>
<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-1244" style="display: block; margin-left: auto; margin-right: auto;" title="Exported UTIs" src="http://paulsolt.com/wp-content/uploads/2012/02/Exported-UTIs.png" alt="" width="705" height="517" /></p>
<ol>
<li>My App doesn&#8217;t load saved bundles (NSFileWrapper), instead it just looks inside the folder.<img style="display: block; margin-left: auto; margin-right: auto;" title="Can't Load Data.png" src="http://paulsolt.com/wp-content/uploads/2012/02/Cant-Load-Data.png" alt="Can t Load Data" width="600" height="397" border="0" /></li>
<li>I tried to undo the Export UTI by deleting it and remove the Identifier, but that doesn&#8217;t help.</li>
<li>By deleting the Identifier I can&#8217;t load &#8220;New documents&#8221;.</li>
</ol>
<div></div>
<h2><strong>Solutions</strong></h2>
<p>There are two solutions, the second one is more robust, but the first will get you back to when it was working.</p>
<h3>Solution 1: Revert back to Xcode template defaults</h3>
<p><img class="aligncenter size-full wp-image-1242" style="display: block; margin-left: auto; margin-right: auto;" title="App Plist file - LSItemContentTypes" src="http://paulsolt.com/wp-content/uploads/2012/02/Plist.png" alt="" width="527" height="255" /></p>
<ol>
<li>Remove all Exported UTIs</li>
<li>Open your App .plist file and remove the LSItemContentTypes from your App .plist file. You can&#8217;t see it in the Target -&gt; Info page.
<ol>
<li>NOTE: if you don&#8217;t delete an empty LSItemContentTypes array, then you won&#8217;t be able to open New files.</li>
<li>If LSITemContentTypes is defined, it&#8217;ll ignore the &#8220;Bundle&#8221; checkbox (LSTypeIsPackage) See the <a title="LSTypeIsPackage" href="http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html" target="_blank">Apple docs</a>.</li>
</ol>
</li>
<li>Make sure &#8220;Bundle&#8221; is checked on the Document Types on your Target&#8217;s Info page, or (LSTypeIsPackage on .plist file)
<ol>
<li>This option is magic and auto generates a Identifier for you. (check your save file with &#8220;mdls&#8221; on the Terminal)</li>
</ol>
</li>
<li>Don&#8217;t use an Identifier if you check the Bundle option (Document is distributed as a bundle)</li>
<li>Clean the Xcode project</li>
</ol>
<p>&nbsp;</p>
<h3>Solution 2: Use the package UTI</h3>
<p>You&#8217;ll need to add the correct <a href="https://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1">LSItemContentTypes</a> found in Apple&#8217;s documentation. I took a look at the Xcode project file with the Terminal utility &#8220;mdls&#8221; (See sample output below)</p>
<ol>
<li>Set a unique identifier (Reverse DNS name) com.Your_Company_Name.Project_Name
<ol>
<li>It needs to match theDocument Type and Exported UTIs</li>
</ol>
</li>
<li>For a bundle, you&#8217;ll need to set the &#8220;Conforms To&#8221; for the Exported UTIs to &#8220;com.apple.package&#8221;
<ol>
<li>Apple Docs: &#8220;A package (that is, a directory presented to the user as a file)&#8221;</li>
</ol>
</li>
<li>I noticed Xcode project files also include, public.composite-content
<ol>
<li>Apple Docs:  &#8221;Base type for mixed content. For example, a PDF file contains both text and special formatting data&#8221;</li>
</ol>
</li>
<li>NOTE: If you mistype com.apple.package, or leave it out, your file folder will be treated like a public.folder, and you&#8217;ll get folder behavior.</li>
<li>Clean the Xcode project</li>
</ol>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="com.apple.package.png" src="http://paulsolt.com/wp-content/uploads/2012/02/com.apple_.package.png" alt="Com apple package" width="600" height="361" border="0" /></p>
<h2></h2>
<h2>Working Icon and Bundle File</h2>
<p>If all goes well you&#8217;ll now see the Icon (icns) file that you created in the Open dialog and the folder will appear to be a bundle.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="OpenDialogWorks.png" src="http://paulsolt.com/wp-content/uploads/2012/02/OpenDialogWorks1.png" alt="OpenDialogWorks" width="600" height="397" border="0" /></p>
<h2>Using MDLS to inspect your files</h2>
<p>The only way it works as a bundle is if the &#8220;com.apple.package&#8221; ContentType is listed, otherwise something is wrong. Check your save files with the &#8220;mdls&#8221; command.</p>
<pre>mdls MathAndArt.xcodeproj/</pre>
<p><img title="Screen Shot 2012-02-02 at 7.57.23 PM.png" src="http://paulsolt.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-7.57.23-PM1.png" alt="Screen Shot 2012 02 02 at 7 57 23 PM" width="467" height="450" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2012/02/creating-nsdocument-using-folder-bundles-and-uti-identifiers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Potential of Siri</title>
		<link>http://paulsolt.com/2011/10/the-potential-of-siri/</link>
		<comments>http://paulsolt.com/2011/10/the-potential-of-siri/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 17:48:33 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[siri]]></category>
		<category><![CDATA[voice control]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1225</guid>
		<description><![CDATA[<p>I&#8217;ve been working on iPhone development for several years and I have been very excited to see how the iPhone SDK has progressed. See my original article on how I envisioned the <a title="iPad Revolution" href="http://paulsolt.com/2010/02/ipad-revolution/" target="_blank">iPad revolutionizing the computing experience</a>. Siri takes the iPhone platform to an entirely new level. </p> <p>Feature article by MD</p> [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on iPhone development for several years and I have been very excited to see how the iPhone SDK has progressed. See my original article on how I envisioned the <a title="iPad Revolution" href="http://paulsolt.com/2010/02/ipad-revolution/" target="_blank">iPad revolutionizing the computing experience</a>. Siri takes the iPhone platform to an entirely new level. <span id="more-1225"></span></p>
<p>Feature article by MD</p>
<p>If you&#8217;re curious as to how the potential of Siri will impact iOS App development, then look no further than the video Apple used to demonstrate the technology, despite its somewhat heavy-on-the-awesome slant. The fact of the matter is, this is voice recognition technology that&#8217;s approaching the level of sophistication you saw in Startrek Voyager as a kid, and it could do wonders for 3rd party App developers.</p>
<p>&#8220;Load Angry Birds. New game, please. Aim 45 degrees off the starboard. Lower 3 degrees. Fire. Raise 3 degrees. Fire. Down with the piggies! Fire.&#8221;</p>
<p>It sounds far fetched, but is it? Voice control to do anything from text messaging to calling, and it&#8217;s not difficult to imagine it controlling things that are not traditionally based around natural voice input. It&#8217;d also be a great idea to work in some camera/augmented reality games, as playing &#8220;I Spy&#8221; with Siri could only make the device even more intuitive, when you&#8217;re not ringing your husband, friend or <a title="O2" href="http://www.o2.co.uk/" target="_blank">O2</a> without even touching your handset.</p>
<p>An open API to Siri will help push developers in a new direction building innovative software for the iPhone 4S, given that Siri pushes the boundaries in a way that encourages people to try something new. Google Goggles was a great example of this &#8211; it took what QR codes were doing and pushed it farther than anyone had expected it to go &#8211; I certainly didn&#8217;t expect to be able to use my voice to dictate a text message, make two calls and send an email to my boss, did you?</p>
<p>The best thing about it is the potential it awards developers working with voice and hardware interaction, as unless you&#8217;re paranoid about SkyNet and HAL-9000 becoming a reality, it certainly puts a friendlier face on an already friendly looking phone. All that&#8217;s left is for us to enjoy the adventures many app programmers are embarking on with Siri, in addition to the talented invidiual who&#8217;s just ported it to the iPhone 4. Good times to come, ahead.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/10/the-potential-of-siri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Photo Table: Sharing Photos on iPad and iPhone using Multi-touch Input</title>
		<link>http://paulsolt.com/2011/09/photo-table-sharing-photos-on-ipad-and-iphone-using-multi-touch-input/</link>
		<comments>http://paulsolt.com/2011/09/photo-table-sharing-photos-on-ipad-and-iphone-using-multi-touch-input/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 16:47:52 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[photo table]]></category>
		<category><![CDATA[slideshow]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1203</guid>
		<description><![CDATA[Photo Table has been built from the ground up to support image management using the concept of albums. We can import albums from Facebook, Flickr, and the Photo Library.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="size-full wp-image-1209 alignright" title="Photo Table on iPad and iPhone" src="http://paulsolt.com/wp-content/uploads/2011/09/iPadiPhoneDuo.png" alt="Multi-touch Photo Sharing" width="278" height="392" /></p>
<p style="text-align: justify;">I&#8217;ve been busy avoiding recruiters and graduating to work on a software startup in the RIT Summer Startup Program. Over the past four months we&#8217;ve been working out of RIT&#8217;s Venture Creations at 125 Tech Park, Rochester, NY. Initially we focused on Artwork Evolution and printing integration, but have shifted directions into supporting photo sharing.</p>
<p style="text-align: justify;">Our new product is called Photo Table. It&#8217;s an app that enables sharing photos on iPad and iPhone. The uses multi-touch gestures seen first in my gesture based <a title="Wallpaper Evolution for iPhone and iPad" href="http://blog.artworkevolution.com/ios-apps/wallpaper-evolution/">Wallpaper Evolution app</a> for iPhone and iPad. The interactive Wallpaper Evolution app provided a mechanism to add one photo to the table at a time, but it lacked depth without photo album management. That changes with Photo Table.</p>
<p style="text-align: justify;">Photo Table has been built from the ground up to support image management using the concept of albums. We can import albums from Facebook, Flickr, and the Photo Library. Any image can be added to an album or removed just like you&#8217;d expect. Once you have albums you can open them and show family and friends interactive slideshows. All the photos are stored in the app, so we support offline content viewing. We have a lot of fun with the App and are hoping that you&#8217;ll be excited to try it.</p>
<ul style="text-align: justify;">
<li><strong>Website</strong>: <a title="Multi-touch photo sharing app for iPad" href="http://www.PhotoTableApp.com/">http://www.PhotoTableApp.com/</a></li>
<li><strong>Twitter</strong>: <a title="Photo Table on Twitter" href="http://www.twitter.com/PhotoTable">@PhotoTable</a></li>
<li><strong>Facebook</strong>: <a title="Photo Table on Facebook" href="http://www.Facebook.com/PhotoTableApp/">http://www.Facebook.com/PhotoTableApp/</a></li>
</ul>
<h3 style="text-align: justify;"><a title="Download Facebook albums for off-line viewing" href="http://www.youtube.com/watch?v=7dPguidC6Mk ">Photo Table Facebook Album Importing</a></h3>
<p style="text-align: justify;">
<p><a href="http://www.youtube.com/watch?v=7dPguidC6Mk&#038;fmt=18">http://www.youtube.com/watch?v=7dPguidC6Mk</a></p>
</p>
<h3 style="text-align: justify;"><a title="Play Music with Photo Albums and Share with Family" href="http://www.youtube.com/watch?v=fpge8z65wH4 ">Add Music to Photo Albums for Sharing with Families</a></h3>
<p style="text-align: justify;">
<p><a href="http://www.youtube.com/watch?v=fpge8z65wH4&#038;fmt=18">http://www.youtube.com/watch?v=fpge8z65wH4</a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/09/photo-table-sharing-photos-on-ipad-and-iphone-using-multi-touch-input/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>clang++ is awesome, goodbye g++</title>
		<link>http://paulsolt.com/2011/09/clang-is-awesome-goodbye-g/</link>
		<comments>http://paulsolt.com/2011/09/clang-is-awesome-goodbye-g/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 22:26:43 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[clang++]]></category>
		<category><![CDATA[compilers]]></category>
		<category><![CDATA[g++]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1188</guid>
		<description><![CDATA[<p>I finally got around to reading up on the clang compiler and I love it. The error messages are so helpful. Here&#8217;s a quick example with a syntax error. Lets compile it on the command line.</p> #include &#60;iostream&#62; int main() { std::cotut &#60;&#60; "Hello World"; return 0; } <p><br /> What happens when I run [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to reading up on the clang compiler and I love it. The error messages are so helpful. Here&#8217;s a quick example with a syntax error. Lets compile it on the command line.</p>
<pre style="padding-left: 30px;">#include &lt;iostream&gt;
int main() {
	std::cotut &lt;&lt; "Hello World";
	return 0;
}</pre>
<p><span id="more-1188"></span><br />
What happens when I run the code with g++?</p>
<pre style="padding-left: 30px;">paulsolt@~/dev $ g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:3: error: ‘cotut’ is not a member of ‘std’</pre>
<pre style="padding-left: 30px;"></pre>
<p>Here&#8217;s what happens in clang++, notice how it highlights the position and it&#8217;s actually more helpful in fixing the error.</p>
<pre style="padding-left: 30px;">paulsolt@~/dev $ clang++ test.cpp
test.cpp:4:7: error: no member named 'cotut' in namespace 'std'; did you mean 'cout'?
        std::cotut &lt;&lt; "Hello World";
        ~~~~~^~~~~
             cout
/usr/include/c++/4.2.1/iostream:63:18: note: 'cout' declared here
  extern ostream cout;          ///&lt; Linked to standard output</pre>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/09/clang-is-awesome-goodbye-g/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Idea to App Store &#8211; How to make, market, and sell your iPhone App</title>
		<link>http://paulsolt.com/2011/08/idea-to-app-store-how-to-make-market-and-sell-your-iphone-app/</link>
		<comments>http://paulsolt.com/2011/08/idea-to-app-store-how-to-make-market-and-sell-your-iphone-app/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 18:53:27 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[appfigures]]></category>
		<category><![CDATA[Artwork Evolution]]></category>
		<category><![CDATA[flurry]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[sales]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1173</guid>
		<description><![CDATA[<p>I&#8217;ve posted my presentation from the Computer Science Community at RIT on making iPhone/iPad apps from February 2011. The video is in two parts and I discuss the initial sales, analytics, marketing when releasing an iPhone app.</p> <p></p> <p>Update: 8/31/11 <a href="http://paulsolt.com/wp-content/uploads/2011/08/Idea-to-App-Store.pdf">Idea to App Store Slides (PDF)</a></p> <a title="Idea to App Store Part 1" href="http://www.youtube.com/watch?v=2uza2teEBEQ">Part 1:</a> [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve posted my presentation from the Computer Science Community at RIT on making iPhone/iPad apps from February 2011. The video is in two parts and I discuss the initial sales, analytics, marketing when releasing an iPhone app.</p>
<p><span id="more-1173"></span></p>
<p><strong>Update: 8/31/11</strong> <a href="http://paulsolt.com/wp-content/uploads/2011/08/Idea-to-App-Store.pdf">Idea to App Store Slides (PDF)</a></p>
<h2><a title="Idea to App Store Part 1" href="http://www.youtube.com/watch?v=2uza2teEBEQ">Part 1:</a></h2>
<p><a href="http://www.youtube.com/watch?v=2uza2teEBEQ&#038;fmt=18">http://www.youtube.com/watch?v=2uza2teEBEQ</a></p>
<h2><a title="Idea to App Store Part 2" href="http://www.youtube.com/watch?v=iyBis6W28Rw">Part 2:</a></h2>
<p><a href="http://www.youtube.com/watch?v=iyBis6W28Rw&#038;fmt=18">http://www.youtube.com/watch?v=iyBis6W28Rw</a></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/08/idea-to-app-store-how-to-make-market-and-sell-your-iphone-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iOS Development Presentation</title>
		<link>http://paulsolt.com/2011/06/ios-development-presentation/</link>
		<comments>http://paulsolt.com/2011/06/ios-development-presentation/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 14:22:45 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[RIT]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1159</guid>
		<description><![CDATA[<p><a href="http://paulsolt.com/wp-content/uploads/2011/06/Screen-shot-2011-06-12-at-10.17.39-AM.png"></a>Here are my slides and demo code from the presentation on Friday, June 10th at 10am in ICL5 at RIT.</p> <p><a href="http://paulsolt.com/wp-content/uploads/2011/06/iPhoneOS-Development-III-Paul-Solt.pdf">iPhoneOS Development III &#8211; Paul Solt</a></p> <p><a href="http://paulsolt.com/wp-content/uploads/2011/06/csProject.zip">Gestures Demo</a></p> <p>&#160;</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://paulsolt.com/wp-content/uploads/2011/06/Screen-shot-2011-06-12-at-10.17.39-AM.png"><img class="size-medium wp-image-1164 alignright" title="Gestures Demo" src="http://paulsolt.com/wp-content/uploads/2011/06/Screen-shot-2011-06-12-at-10.17.39-AM-159x300.png" alt="Gestures Demo" width="159" height="300" /></a>Here are my slides and demo code from the presentation on Friday, June 10th at 10am in ICL5 at RIT.</p>
<p><a href="http://paulsolt.com/wp-content/uploads/2011/06/iPhoneOS-Development-III-Paul-Solt.pdf">iPhoneOS Development III &#8211; Paul Solt</a></p>
<p><a href="http://paulsolt.com/wp-content/uploads/2011/06/csProject.zip">Gestures Demo</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/06/ios-development-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transparent UITableView with Custom Background UIView and Tap Gestures</title>
		<link>http://paulsolt.com/2011/05/transparent-uitableview-with-custom-background-uiview-and-tap-gestures/</link>
		<comments>http://paulsolt.com/2011/05/transparent-uitableview-with-custom-background-uiview-and-tap-gestures/#comments</comments>
		<pubDate>Sat, 14 May 2011 23:38:41 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[tap gesture]]></category>
		<category><![CDATA[transparent background]]></category>
		<category><![CDATA[uitableview]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1094</guid>
		<description><![CDATA[<p style="text-align: justify;">In order to create a custom background for a transparent UITableView you&#8217;ll need to do a few things. I&#8217;ve got the basic code below after a lot of tinkering. I&#8217;ve also included how to make it so you can hide the UITableView when you tap in the transparent areas below the rows using [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">In order to create a custom background for a transparent <code>UITableView</code> you&#8217;ll need to do a few things. I&#8217;ve got the basic code below after a lot of tinkering. I&#8217;ve also included how to make it so you can hide the <code>UITableView</code> when you tap in the transparent areas below the rows using a <code>UITapGestureRecognizer</code>. In the images below you can see the custom view in action.</p>
<div class="mceTemp" style="text-align: center;">
<dl id="attachment_1102" class="wp-caption alignnone" style="width: 169px;">
<dt class="wp-caption-dt"><a href="http://paulsolt.com/wp-content/uploads/2011/05/TableViewCustomBackground.png"><img class="size-medium wp-image-1102" title="TableViewCustomBackground" src="http://paulsolt.com/wp-content/uploads/2011/05/TableViewCustomBackground-159x300.png" alt="UITableView with custom backgroundView" width="159" height="300" /></a></dt>
<dd class="wp-caption-dd">UITableView with Custom Background</dd>
</dl>
</div>
<p style="text-align: center;"><a href="http://paulsolt.com/wp-content/uploads/2011/05/TableViewCustomBackground.png"></a><a href="http://paulsolt.com/wp-content/uploads/2011/05/TableViewHidden.png"><br />
</a></p>
<div id="attachment_1101" class="wp-caption aligncenter" style="width: 169px"><a href="http://paulsolt.com/wp-content/uploads/2011/05/TableViewHidden.png"><img class="size-medium wp-image-1101" title="TableViewHidden" src="http://paulsolt.com/wp-content/uploads/2011/05/TableViewHidden-159x300.png" alt="Hidden UITableView with Custom Background" width="159" height="300" /></a><p class="wp-caption-text">Hidden UITableView Showing Custom Background</p></div>
<p><strong>Key Points:</strong></p>
<ul>
<li style="text-align: justify;">Don&#8217;t subclass <code>UITableView</code>, instead use it as a instance variable in your own custom UIViewController subclass.</li>
<li style="text-align: justify;"> Create a custom <code>UIView</code> subclass to use as the background view, this will be visible when the <code>UITableView</code> is hidden or has a transparent background view.</li>
<li style="text-align: justify;"> On iPad make sure you clear the UITableView&#8217;s <code>backgroundView</code> and set it to <code>nil</code> in addition to setting the background color to<code>[UIColor clearColor]</code></li>
<li style="text-align: justify;"> Register a <code>UITapGestureRecognizer</code> with the viewController&#8217;s view and then set the attribute <code>cancelsTouches</code> to <code>NO</code> so that the touches from the gesture propagate to both the <code>UITableView</code> and the custom background view.</li>
<li style="text-align: justify;"> In the <code>-(void)handleTapGesture:</code> method you&#8217;ll want to send taps that don&#8217;t touch a row to toggle the UI so that the <code>UITableView</code> hides or unhides.</li>
</ul>
<p style="text-align: justify;"><strong>Notes:</strong></p>
<ul>
<li style="text-align: justify;">I show a <code>UINavigationBar</code>, so my <code>UITableView</code> frame needs to take into account the size of the navigation bar.</li>
<li style="text-align: justify;">Set the UILabel&#8217;s or custom views backgroundColor in the table&#8217;s cells to have <code>[UIColor clearColor]</code> so that they animate and fade correctly.</li>
</ul>
<p>See the sample code below:<br />
<script src="https://gist.github.com/972555.js?file=MyTransparentTableViewController.h"></script> <script src="https://gist.github.com/972555.js?file=MyTransparentTableViewController.m"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/05/transparent-uitableview-with-custom-background-uiview-and-tap-gestures/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wallpaper Evolution 1.0.1 Released on the App Store</title>
		<link>http://paulsolt.com/2011/05/wallpaper-evolution-1-0-1-released-on-the-app-store/</link>
		<comments>http://paulsolt.com/2011/05/wallpaper-evolution-1-0-1-released-on-the-app-store/#comments</comments>
		<pubDate>Sat, 07 May 2011 02:08:57 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1081</guid>
		<description><![CDATA[<p>Tap, flick, and zoom psychedelic and abstract wallpapers in a highly interactive photo application. Each image is available in high-definition so that it can be used as a wallpaper for any iPhone, iPod Touch, or iPad using iOS 4.0+.<br /> <a href="http://click.linksynergy.com/fs-bin/stat?id=9GnF2fCZgGg&#38;offerid=146261&#38;type=3&#38;subid=0&#38;tmpid=1826&#38;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fwallpaper-evolution%252Fid412635182%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store"></a></p> <a href="http://bit.ly/DownloadWallpaperEvolution"></a>]]></description>
			<content:encoded><![CDATA[<p>Tap, flick, and zoom psychedelic and abstract wallpapers in a highly    interactive photo application. Each image is available in    high-definition so that it can be used as a wallpaper for any iPhone,    iPod Touch, or iPad using iOS 4.0+.<br />
<a href="http://click.linksynergy.com/fs-bin/stat?id=9GnF2fCZgGg&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fwallpaper-evolution%252Fid412635182%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store"><img src="http://ax.phobos.apple.com.edgesuite.net/images/web/linkmaker/badge_appstore-lrg.gif" alt="Wallpaper Evolution - Paul Solt" /></a></p>
<pre><a href="http://bit.ly/DownloadWallpaperEvolution"><img class="alignleft" title="Wallpaper Evolution" src="http://blog.artworkevolution.com/wp-content/uploads/2011/05/Tap_960x640.jpg" alt="Wallpaper Evolution on iPhone 4" width="269" height="403" /><img class="alignnone size-full wp-image-91" title="Wallpaper Evolution for iPhone 4" src="http://blog.artworkevolution.com/wp-content/uploads/2011/05/SetWallpapers_960x640.jpg" alt="Set Wallpapers on iPhone 4" width="269" height="403" /></a>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/05/wallpaper-evolution-1-0-1-released-on-the-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Limiting UIPinchGestureRecognizer Zoom Levels</title>
		<link>http://paulsolt.com/2011/03/limiting-uipinchgesturerecognizer-zoom-levels/</link>
		<comments>http://paulsolt.com/2011/03/limiting-uipinchgesturerecognizer-zoom-levels/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 01:03:34 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[gestures]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[zoom]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1069</guid>
		<description><![CDATA[<p>After wasting two days I&#8217;ve finally figured out how to correctly limit zoom levels when working with a UIPinchGestureRecognizer. I needed to resize images, but I didn&#8217;t want people to go outside of desirable limits.</p> <p><a href="http://paulsolt.com/wp-content/uploads/2011/03/Screen-shot-2011-03-26-at-8.58.08-PM.png"></a></p> <p>Here&#8217;s the basic math:</p> <p>1. We know: currentSize * scaleFactor = newSize</p> <p>2. Clamp the maximum scale factor [...]]]></description>
			<content:encoded><![CDATA[<p>After wasting two days I&#8217;ve finally figured out how to correctly limit zoom levels when working with a UIPinchGestureRecognizer. I needed to resize images, but I didn&#8217;t want people to go outside of desirable limits.</p>
<p><a href="http://paulsolt.com/wp-content/uploads/2011/03/Screen-shot-2011-03-26-at-8.58.08-PM.png"><img class="aligncenter size-full wp-image-1072" title="Zoom Factors" src="http://paulsolt.com/wp-content/uploads/2011/03/Screen-shot-2011-03-26-at-8.58.08-PM.png" alt="" width="396" height="744" /></a></p>
<p>Here&#8217;s the basic math:</p>
<p>1. We know: currentSize * scaleFactor = newSize</p>
<p>2. Clamp the maximum scale factor using the proportion maxScale / currentScale</p>
<p>3. Clamp the minimum scale factor using the proportion minScale / currentScale</p>
<p>The code below assumes there is an instance variable CGFloat lastScale and that a view has been set for the UIPinchGestureRecognizer.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>handlePinchGesture<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIPinchGestureRecognizer <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>gestureRecognizer <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>gestureRecognizer state<span style="color: #002200;">&#93;</span> <span style="color: #002200;">==</span> UIGestureRecognizerStateBegan<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// Reset the last scale, necessary if there are multiple objects with different scales</span>
lastScale <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>gestureRecognizer scale<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>gestureRecognizer state<span style="color: #002200;">&#93;</span> <span style="color: #002200;">==</span> UIGestureRecognizerStateBegan ||
<span style="color: #002200;">&#91;</span>gestureRecognizer state<span style="color: #002200;">&#93;</span> <span style="color: #002200;">==</span> UIGestureRecognizerStateChanged<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
CGFloat currentScale <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>gestureRecognizer view<span style="color: #002200;">&#93;</span>.layer valueForKeyPath<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;transform.scale&quot;</span><span style="color: #002200;">&#93;</span> floatValue<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Constants to adjust the max/min values of zoom</span>
<span style="color: #a61390;">const</span> CGFloat kMaxScale <span style="color: #002200;">=</span> <span style="color: #2400d9;">2.0</span>;
<span style="color: #a61390;">const</span> CGFloat kMinScale <span style="color: #002200;">=</span> <span style="color: #2400d9;">1.0</span>;
&nbsp;
CGFloat newScale <span style="color: #002200;">=</span> <span style="color: #2400d9;">1</span> <span style="color: #002200;">-</span>  <span style="color: #002200;">&#40;</span>lastScale <span style="color: #002200;">-</span> <span style="color: #002200;">&#91;</span>gestureRecognizer scale<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>; <span style="color: #11740a; font-style: italic;">// new scale is in the range (0-1)</span>
newScale <span style="color: #002200;">=</span> MIN<span style="color: #002200;">&#40;</span>newScale, kMaxScale <span style="color: #002200;">/</span> currentScale<span style="color: #002200;">&#41;</span>;
newScale <span style="color: #002200;">=</span> MAX<span style="color: #002200;">&#40;</span>newScale, kMinScale <span style="color: #002200;">/</span> currentScale<span style="color: #002200;">&#41;</span>;
CGAffineTransform transform <span style="color: #002200;">=</span> CGAffineTransformScale<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>gestureRecognizer view<span style="color: #002200;">&#93;</span> transform<span style="color: #002200;">&#93;</span>, newScale, newScale<span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#91;</span>gestureRecognizer view<span style="color: #002200;">&#93;</span>.transform <span style="color: #002200;">=</span> transform;
&nbsp;
lastScale <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>gestureRecognizer scale<span style="color: #002200;">&#93;</span>;  <span style="color: #11740a; font-style: italic;">// Store the previous scale factor for the next pinch gesture call</span>
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/03/limiting-uipinchgesturerecognizer-zoom-levels/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Artwork Evolution 1.2.80 Released!</title>
		<link>http://paulsolt.com/2011/02/artwork-evolution-1-2-80-released/</link>
		<comments>http://paulsolt.com/2011/02/artwork-evolution-1-2-80-released/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:06:51 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Artwork Evolution]]></category>
		<category><![CDATA[coffee table]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wallpapers]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=1058</guid>
		<description><![CDATA[Download <p style="padding-left: 30px;">Buy <a href="http://bit.ly/ArtworkEvolutionApp">Artwork Evolution on the App Store</a> and create wallpapers for iPhone, iPod Touch, and iPad!<br /> <a href="http://bit.ly/ArtworkEvolutionApp"></a></p> <a href="http://blog.artworkevolution.com/wp-content/uploads/2011/02/NewUISmallWeb.jpg"></a><a href="http://bit.ly/ArtworkEvolutionApp"></a> New Features Coffee Table Photos: Touch, slide, and flick photos off the table! Updated main screen user interface Video <p style="text-align: center;"> <p><a href="http://www.youtube.com/watch?v=xkwE8BRQsAo&#038;fmt=18">http://www.youtube.com/watch?v=xkwE8BRQsAo</a></p></p>]]></description>
			<content:encoded><![CDATA[<h3>Download</h3>
<p style="padding-left: 30px;">Buy <a href="http://bit.ly/ArtworkEvolutionApp">Artwork Evolution on the App Store</a> and create wallpapers for iPhone, iPod Touch, and iPad!<br />
<a href="http://bit.ly/ArtworkEvolutionApp"><img src="http://ax.phobos.apple.com.edgesuite.net/images/web/linkmaker/badge_appstore-lrg.gif" alt="Artwork Evolution - Paul Solt" /></a></p>
<div class="mceIEcenter">
<dl id="attachment_79" class="aligncenter">
<dt><a href="http://blog.artworkevolution.com/wp-content/uploads/2011/02/NewUISmallWeb.jpg"></a><a href="http://bit.ly/ArtworkEvolutionApp"><img class="aligncenter size-full wp-image-1061" title="NewUISmallWeb" src="http://paulsolt.com/wp-content/uploads/2011/02/NewUISmallWeb.jpg" alt="" width="360" height="780" /></a>
</dt>
</dl>
</div>
<h3>New Features</h3>
<ul>
<li>Coffee Table Photos: Touch, slide, and flick photos off the table!</li>
<li>Updated main screen user interface</li>
</ul>
<h3>Video</h3>
<p style="text-align: center;">
<p><a href="http://www.youtube.com/watch?v=xkwE8BRQsAo&#038;fmt=18">http://www.youtube.com/watch?v=xkwE8BRQsAo</a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2011/02/artwork-evolution-1-2-80-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

