<?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>yycApps.com &#124; iPhone Apps built by Calgary</title>
	<atom:link href="http://www.yycapps.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yycapps.com</link>
	<description>iPhone Apps Built by the Calgary Community</description>
	<lastBuildDate>Mon, 14 May 2012 04:47:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Throwing Stars to Triceratops: Ninja Dino Showdown</title>
		<link>http://www.yycapps.com/2012/04/throwing-stars-to-triceratops-ninja-dino-showdown/</link>
		<comments>http://www.yycapps.com/2012/04/throwing-stars-to-triceratops-ninja-dino-showdown/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 18:17:35 +0000</pubDate>
		<dc:creator>Kevin Dubienski</dc:creator>
				<category><![CDATA[App Reviews]]></category>
		<category><![CDATA[Calgary Developer Community News]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[Local Developer]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[App Review]]></category>
		<category><![CDATA[Binary Rebellion]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[Launch]]></category>
		<category><![CDATA[Locak iPhone Buzz]]></category>
		<category><![CDATA[Ninja Dino Showdown]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=186</guid>
		<description><![CDATA[I started my morning with a nice cup of coffee, pushed some emails back and forth, then commenced a battle-royal with my fleet of ninja&#8217;s against hordes of cute little dinosaurs.  Ninja Dino Showdown is a lane defence game for iOS devices where the player controls three ninjas across a tiled battlefield.  The further I [...]]]></description>
			<content:encoded><![CDATA[<p>I started my morning with a nice cup of coffee, pushed some emails back and forth, then commenced a battle-royal with my fleet of ninja&#8217;s against hordes of cute little dinosaurs.  <a href="http://www.ninjadinoshowdown.com">Ninja Dino Showdown</a> is a lane defence game for iOS devices where the player controls three ninjas across a tiled battlefield.  The further I progressed, the more cuddly dino beasts were unleashed upon me, leaving my team of three to kick some serious ass.</p>
<p style="text-align: center;"><img class="size-full wp-image-187 aligncenter" title="ninjadinoshowdown_logo" src="http://www.yycapps.com/wp-content/uploads/2012/04/nds_logo.png" alt="Ninja Dino Showdown" width="446" height="172" /></p>
<p>Ninja Dino Showdown was developed by Calgary&#8217;s Wilson Leong at Binary Rebellion and Graham Baradoy (amongst others) over the past two years.  There&#8217;s been lots of momentum for launching this app on March 6, 2012 and this lean startup is getting a taste of success (and rightly so)!  Their hard work is evident as the gameplay is turbo addictive, the design works for all ages, and the amount of content (ninjas, abilities, difficulties, etc.) is quite impressive.</p>
<p><span id="more-186"></span></p>
<p><a href="http://www.yycapps.com/wp-content/uploads/2012/04/ninjadino.png"><img style="margin-left: 100px;" title="ninjadino" src="http://www.yycapps.com/wp-content/uploads/2012/04/ninjadino.png" alt="" width="400" height="261" /></a></p>
<p>It&#8217;s a delight to see Wilson &amp; Graham are listening to our suggestions for future updates directly through the app.  Since launching, the Binary Rebellion team has made a number of updates to substantially improve this game.  Ninja Dino Showdown is now optimized for Retina displays, the stage backgrounds have also been spruced up, and the difficulty of charger dinos (your soon to be worst enemy) have been adjusted to make gameplay a tad more possible.  Binary Rebellion has shown its users they are committed to making this game as awesome as can be.</p>
<p><iframe src="http://www.youtube.com/embed/W0PKRboxzkg" frameborder="0" width="480" height="360"></iframe></p>
<p>If you&#8217;re looking for a new game to help you vent some steam, you won&#8217;t regret buying a copy of Ninja Dino Showdown.</p>
<p><a href="http://itunes.apple.com/us/app/ninja-dino-showdown-!/id504432971?mt=8"><img class="alignleft  wp-image-10" title="availableOntheapp" src="http://www.yycapps.com/wp-content/uploads/2010/02/availableOntheapp.png" alt="" width="126" height="46" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/04/throwing-stars-to-triceratops-ninja-dino-showdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>yycApps Version 2.5</title>
		<link>http://www.yycapps.com/2012/04/yycapps-version-2-5/</link>
		<comments>http://www.yycapps.com/2012/04/yycapps-version-2-5/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 19:52:37 +0000</pubDate>
		<dc:creator>Connor Turner</dc:creator>
				<category><![CDATA[Calgary Developer Community News]]></category>
		<category><![CDATA[yycApps News]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=183</guid>
		<description><![CDATA[Today we&#8217;re really excited to announce a new partnership and a major reboot to yycApps.com. But before we reveal the big news, here&#8217;s a bit of the backstory. As you may know, yycApps.com started in early 2010 as a way to help cover and promote the growing Calgary iPhone Development community. At the time there [...]]]></description>
			<content:encoded><![CDATA[<p>Today we&#8217;re really excited to <strong>announce a new partnership and a major reboot to yycApps.com</strong>.<span id="more-183"></span></p>
<p>But before we reveal the big news, here&#8217;s a bit of the backstory. As you may know, <strong>yycApps.com </strong>started in early 2010 as a way to help cover and promote the growing  Calgary iPhone Development community. At the time there were some great events going on and lots of great success stories, but there was no vehicle to get this news out to Calgarians. So as answer to this dilemma, yycApps.com was born. </p>
<p>Since it&#8217;s humble beginnings in 2010, the site has grown into a great resource for Calgary developers and the community as a whole. The site has showcased some amazing success stories and provided a venue for smaller developers to garner attention. The site has also been a vehicle to bring the development community to the media, with features in Metro Calgary, Global and CBC Calgary. We&#8217;ve also used our stance to create a small but <a href=" http://www.linkedin.com/groups/yycApps-Calgary-iPhone-iPad-Developers-3792991?trk=myg_ugrp_ovr" target="_blank">vibrant LinkedIn community</a>. Overall, the site has been a tremendously successful vehicle for getting the Calgary iPhone development community noticed. </p>
<p>But since the end of last year, the growth of the site has stagnated at bit. We apologize for that, we&#8217;ve struggled to keep up with the growing list of developers and the numerous app releases. We&#8217;ve also had a difficult time keeping the content on the site fresh and relevant. So rather then let the site trail off into the sunset, we&#8217;re a<strong>nnouncing a new and exciting partnership and a reboot of the site</strong>.</p>
<p>So with that I&#8217;d like to officially welcome the team at <a href="http://randomtype.ca/" target="blank" title="RANDOMTYPE">RANDOMTYPE</a> to the yccApps.com family.</p>
<p><a href="http://www.yycapps.com/wp-content/uploads/2012/04/yycAppscompany.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/04/yycAppscompany.png" alt="Armadillo Studios + RANDOMTYPE" title="yycAppscompany" width="600" height="113" class="aligncenter size-full wp-image-184" /></a></p>
<p>RANDOMTYPE is one of Calgary&#8217;s best kept secrets. It&#8217;s a young upstart company that has released some very impressive apps. Frequent readers to the site will be familiar with Gavin Miller, who has been helping write some of the excellent &#8220;How To&#8221; tutorials on the site. In addition, Kevin Dubienski and Erick Cardoza, have been working to cover the large back log of locally developed apps. </p>
<p>This new partnership, will allow Armadillo Studios and RANDOMTYPE to better share the workload of maintaining yycApps and also allow us to explore new opportunities with the site. We&#8217;re looking at making the site more interactive and committing to posting new content each week. We are also looking at undertaking a state of the Calgary iPhone Development community project for the summer, which we will start talking about in the near future. </p>
<p>But until then, we are looking forward to this new reboot and really taking yycApps.com to the next level. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/04/yycapps-version-2-5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Making the MSNBC pinwheel</title>
		<link>http://www.yycapps.com/2012/04/making-the-msnbc-pinwheel/</link>
		<comments>http://www.yycapps.com/2012/04/making-the-msnbc-pinwheel/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 13:26:25 +0000</pubDate>
		<dc:creator>Gavin Miller</dc:creator>
				<category><![CDATA[Development Information]]></category>
		<category><![CDATA[How To Guide]]></category>
		<category><![CDATA[Local Developer]]></category>
		<category><![CDATA[Development Tutorials]]></category>
		<category><![CDATA[Gavin Miller]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[yycApps]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=177</guid>
		<description><![CDATA[The previous article I wrote about Creating a Keyboard Show Hide Button garnered a comment from Moosc asking for a couple of tutorials he&#8217;d like to see. Looking through the 4 screen shots that were linked, the MSNBC color wheel really caught my eye. From the screenshot I figured there were at least a couple [...]]]></description>
			<content:encoded><![CDATA[<p>The previous article I wrote about <a href="http://www.yycapps.com/2011/07/creating-a-keyboard-show-hide-button/">Creating a Keyboard Show Hide Button</a> garnered a comment from <a href="http://www.yycapps.com/2011/07/creating-a-keyboard-show-hide-button/#comment-268935790"><em>Moosc</em></a> asking for a couple of tutorials he&#8217;d like to see.
</p>
<p>
Looking through the 4 screen shots that were linked, the MSNBC color wheel really caught my eye. From the screenshot I figured there were at least a couple of ways I could go about making a control like that, which got me wondering &#8211; How did MSNBC make that for their app?
</p>
<p style="text-align: center">
<a href="http://www.yycapps.com/wp-content/uploads/2012/03/shows-pin-wheel.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/03/shows-pin-wheel-200x300.png" alt="How to build the MSNBC Pinwheel on the iPhone" title="MSNBC Pinwheel" width="200" height="300" class="aligncenter size-medium wp-image-178" /></a>
</p>
<p><span id="more-177"></span></p>
<p>
This tutorial is going to explore how to make the <b>Shows</b> section of the pinwheel. I choose Shows because it&#8217;s got a set of disabled buttons which will involve writing code with two difference behaviours (enabled &#038; disabled), whereas the <b>Topics</b> section could likely be done with identical code. Specifically in this post you&#8217;ll learn:</p>
<ul>
<li>How to find clues about how an app is built</li>
<li>What type of business decisions go into building an app</li>
<li>How to use arrays to simplify your code</li>
<li>How to make an animation without using animations</li>
<li>How to create a non-rectangular button</li>
</ul>
<h2>Looking for Clues</h2>
<p>
The first step in the process is to extract the images from the app. Download the MSNBC application on iTunes and use the appcrush script to extract the images. <a href="https://github.com/boctor/idev-recipes/tree/master/Utilities/appcrush">Instructions on using appcrush can be found here</a>.
</p>
<p>
I have no idea how this app is being built, but I have my suspicions. My hypothesis is that each piece of the pinwheel is a separate image (including text) and that the white image that shows up on touch is also an image that they simply rotate to fit the particular angle of that pinwheel.
</p>
<p>
So from that hypothesis I&#8217;m scanning through that image directory looking for those images. I&#8217;d expect to find 12 images for the Topics pinwheel and 7 images for the Shows pinwheel, plus either 1 to 5 images for the greyed out section &#8211; that will be dependent on how good their programmers are! :P
</p>
<p>
The first image I hit is <code>business_rest.png</code> which confirms my suspicion that there are going to be 11 other images for each topic on the Topic pinwheel.
</p>
<p><code>business_rest.png<br />
entertainment_rest.png<br />
health_rest.png<br />
politics_rest.png<br />
selectall_rest.png<br />
sports_rest.png<br />
techscience_rest.png<br />
topstories_rest.png<br />
travel_rest.png<br />
usnews_rest.png<br />
weather_rest.png<br />
worldnews_rest.png</code></p>
<p>
Through the first couple of images I didn&#8217;t notice the <b>_press.png</b> image that was paired with each topic. In fact when I saw it on <code>business_press.png</code> I thought it was a moon. I&#8217;ve placed it on a black background to show you what I mean:
</p>
<p style="text-align: center">
<a href="http://www.yycapps.com/wp-content/uploads/2012/04/business_press.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/04/business_press-300x300.png" alt="The business press image looks like a moon." title="The business press image looks like a moon." width="300" height="300" class="aligncenter size-medium wp-image-180" /></a>
</p>
<p>
But after going through all the images it became very clear that each of the above topic images have an associated <code>_press.png</code> for when the image is touched.
</p>
<p>
Moving onto the Shows pinwheel we get a list of 7 images:
</p>
<p><code>dateline_rest.png<br />
hardball_rest.png<br />
meetthepress_rest.png<br />
morningjoe_rest.png<br />
nightlynews_rest.png<br />
rachelmaddow_rest.png<br />
todayshow_rest.png</code></p>
<p>
And 5 disabled images for the bottom of the Shows pinwheel:
</p>
<p><code>shows_disabled0.png<br />
shows_disabled1.png<br />
shows_disabled2.png<br />
shows_disabled3.png<br />
shows_disabled4.png</code></p>
<p>After seeing all these images, I now know that my hypothesis is correct and that I can begin to think about layering these images together to create the pinwheel.
</p>
<h2>What type of Business Decisions go into an App?</h2>
<p>
Now I made the comment earlier that the above could be a single image depending upon how good the MSNBC programmers were, and I think I need to clarify that statement.
</p>
<p>
You see when programming for clients it&#8217;s always a trade off between simple and complex. Sometimes you can go with the simple solution to a problem, and other times you have to rely on complex. In this case, there are two options:
</p>
<p>
One option (simple) is to use serperate images for each piece of the pinwheel. This allows the developers to very quickly create a working version, with little hassle. The trade off comes when the images need to change, this means a graphic designer and a programmer need to be involved. New images need to be cut and then moved into the application. Not a huge hassle but it&#8217;s there. The other potential drawback to this is that if the Shows ever change and Rachel Maddow no longer has a TV show, or they add another TV show to their line up they then have to make an app update. Now I say potential drawback because sometimes app updates are a good thing. They give you another chance to try and hook a user that isn&#8217;t engaged into your application when your update shows up in their iTunes.
</p>
<p>
The second option (complex) is to create each pinwheel item programmatically, including touch animations. The benefits of a solution like this is that any changes for the pinwheel can be done in code and if programmed correct with little time and effort to accomplish. The drawback to this scenario is that it would take a larger amount of time and effort to create such a solution.
</p>
<p>
At the intersection of those two solutions is where programmers frequently get caught. They want to go with the more programmatic approach because in the long run it is less work and also gives them something challenging to work on (I know that&#8217;s what I was hoping for when I ran through the images.) But the business side would rather take the less expensive and quicker solution because they&#8217;re able to get something working and functional out to their customers faster. Neither option is right or wrong, it largely depends upon who&#8217;s making the decisions and which trade offs are willing to be made. And in the case of this tutorial: we&#8217;ll go with option 1!
</p>
<h2>Background</h2>
<p>
Let&#8217;s start by writing code to add the background image to the view under <code>viewDidLoad</code>:
</p>
<p><code>UIImageView *background = [[UIImageView alloc]<br />
&nbsp;&nbsp;&nbsp;&nbsp;initWithImage:[UIImage imageNamed:@"radial_shows_bckg.png"]];<br />
[self.view addSubview:background];</code></p>
<p>
Running the app at this point we get a shell with a background image. But ewww, what an ugly grey status bar. Changing that to black can be done in the xib or programmatically:
</p>
<p><code>[[UIApplication sharedApplication]<br />
&nbsp;&nbsp;&nbsp;&nbsp;setStatusBarStyle:UIStatusBarStyleBlackOpaque];</code></p>
<p>
And while this works in app, it doesn&#8217;t change the status bar when the app launches and so you get an ugly grey to black transition. That&#8217;s because this setting can also be added to the app&#8217;s plist:
</p>
<p style="text-align: center">
<a href="http://www.yycapps.com/wp-content/uploads/2012/04/status-bar-style.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/04/status-bar-style.png" alt="PList setting to set the status bar style" title="PList setting to set the status bar style" width="477" height="38" class="aligncenter size-full wp-image-181" /></a>
</p>
<p>
When done within the plist, the value is going to be applied across the entire application so <i>you don&#8217;t actually need to programmatically set the status bar colour.</i>
</p>
<h2>Adding a pinwheel piece</h2>
<p>
The next step is adding a container to hold the pinwheel images. The container is going to be a view 306&#215;306 pixels, based on the image size. Now obviously it&#8217;s pretty hard to position a transparent view correctly, so let&#8217;s add an image to that view so we have a point of reference:
</p>
<p><code>UIView *pinWheel = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 306, 306)];</p>
<p>UIImageView *dateline = [[UIImageView alloc] initWithImage:<br />
&nbsp;&nbsp;&nbsp;&nbsp;[UIImage imageNamed:@"dateline_rest.png"]];<br />
[pinWheel addSubview:dateline];</p>
<p>[self.view addSubview:pinWheel];</code></p>
<p>
This code has to go after the background image code so that it gets layered on top of the background image.
</p>
<p>
Because the pinwheel images are not the full iphone width and height it&#8217;s easier to use the center of the view as our point of reference for positioning the view. We can set that up with the below code. The <code>- 0.75</code> x-offset and <code>+ 29.5</code> y-offset allow the image to align the MSNBC app:
</p>
<p><code>CGPoint center = CGPointMake(<br />
&nbsp;&nbsp;&nbsp;&nbsp;(CGRectGetWidth([self.view bounds]) / 2.0) - 0.75,<br />
&nbsp;&nbsp;&nbsp;&nbsp;(CGRectGetHeight([self.view bounds]) / 2.0) + 29.5<br />
);<br />
[pinWheel setCenter:center];</code></p>
<h2>Adding many Pinwheel pieces using an Array</h2>
<p>
Let&#8217;s add the next pinwheel piece:
</p>
<p><code>UIImageView *hardball = [[UIImageView alloc] initWithImage:<br />
&nbsp;&nbsp;&nbsp;&nbsp;[UIImage imageNamed:@"hardball_rest.png"]];<br />
[pinWheel addSubview:hardball];</code></p>
<p>
And another:
</p>
<p><code>UIImageView *meetthepress = [[UIImageView alloc] initWithImage:<br />
&nbsp;&nbsp;&nbsp;&nbsp;[UIImage imageNamed:@"meetthepress_rest.png"]];<br />
[pinWheel addSubview:meetthepress];</code></p>
<p>
And another&#8230; Now that&#8217;s going to be a total pain to do that for 12 images. And I know I don&#8217;t want to be a copy paste coder, so let&#8217;s break that into a nice method:
</p>
<p><code>- (void)addImageToView:(UIView *)view forImageName:(NSString *)name {<br />
&nbsp;&nbsp;&nbsp;&nbsp;UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];<br />
&nbsp;&nbsp;&nbsp;&nbsp;button.frame = CGRectMake(0, 0, 306, 306);<br />
&nbsp;&nbsp;&nbsp;&nbsp;[button setImage:[UIImage imageNamed:name]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forState:UIControlStateNormal];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[view addSubview:button];<br />
}</code></p>
<p>
And now we can create an array to loop through the image names and create the pinwheel for us.
</p>
<p><code>NSArray *shows = [NSArray arrayWithObjects:@"dateline_rest.png", @"hardball_rest.png", @"meetthepress_rest.png", @"morningjoe_rest.png", @"nightlynews_rest.png", @"rachelmaddow_rest.png", @"shows_disabled0.png", @"shows_disabled1.png", @"shows_disabled2.png", @"shows_disabled3.png", @"shows_disabled4.png", @"todayshow_rest.png", nil];</p>
<p>for (NSString *show in shows) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self addImageToView:pinWheel forImageName:show];<br />
}</code></p>
<h2>Responding to Touches</h2>
<p>
The next step is to respond to when a user touches an individual pinwheel. Which is where we hit a roadblock. iOS handles regularly shaped buttons really well, but irregular buttons poorly. iOS draws the button as a rectangle and to create a non-rectangle button you&#8217;d apply a transparency to the image. But the problem is that that transparency still receives touch events as if it weren&#8217;t transparent. In our case we layered all images on top of each other, so the result would be that the last image that was added is going to get the touch event regardless of where the user touches, because a user would still be touching the transparency.
</p>
<p>
Thankfully this is a solved problem. The best implementation I found was from <a href="http://oleb.net/blog/2009/10/obshapedbutton-non-rectangular-buttons-on-the-iphone/">Ole Begemann</a>.</p>
<p>
Follow the <a href="https://github.com/ole/OBShapedButton">instructions on GitHub</a> to import the <code>OBShapedButton</code> library, then update the <code>addButtonToView</code> method and change the instantiation from <code>UIButton</code> to <code>OBShapedButton</code>:</p>
<p><code>UIButton *button = [OBShapedButton buttonWithType:UIButtonTypeCustom];</code></p>
<p>
That&#8217;s a clean code change for some major functionality. Big hat tip to Ole Begemann!
</p>
<p>
Now that we have a functioning touch event the next step is to have that touch respond like the MSNBC app. Now this app is unique in that it does a double highlight, here&#8217;s a quick video depicting that action:
</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/Yh045ixLjSM?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>
The first step is to disable the highlighted image that <code>UIButton</code> does automatically. We can do that by setting <code>adjustsImageWhenHighlighted = false;</code>
</p>
<p>
Then we need to add a handler so that when our button is touched we fire the highlight code:
</p>
<p><code>[button addTarget:self action:@selector(buttonTouched:)<br />
&nbsp;&nbsp;&nbsp;&nbsp;forControlEvents:UIControlEventTouchUpInside];</code></p>
<p>
Now I don&#8217;t profess to be an expert in iOS animations so there is likely a better way to do this (post it in the comments if you know of one!), but I found that by using some delayed timers we can create the touch animation quite easily. The <code>buttonTouched</code> code will call a blink method twice. The first call will execute immediately, and the second call we&#8217;ll execute using a delay. That code looks like this:
</p>
<p><code>[self blink:sender];<br />
[self performSelector:@selector(blink:) withObject:sender afterDelay:0.35];</code></p>
<p>
The blink method is simply a show and hide. The show method is executed immediately, and the hide method is executed after a delay:</p>
<p><code>- (void)blink:(UIButton *)sender {<br />
&nbsp;&nbsp;&nbsp;&nbsp;UIImageView *highlight = [self show:sender];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self performSelector:@selector(hide:) withObject:highlight<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterDelay:0.20];<br />
}</code></p>
<p>
The rational for returning the highlight image in the show method is so that we can pass that same image to the hide method, allowing us to call <code>removeFromSuperview</code> in the hide method without more code to find an image reference. The first time I attempted this code, I used a property which did work, however if a second touch occurred before the animation was finished the highlight wouldn&#8217;t disappear.
</p>
<p>
Finally in order to make sure the proper highlight image appears on each pinwheel we&#8217;ll use <code>setTag</code> on the button to associate a button with an array index. We&#8217;ll then use this value to index into an array holding highlight image names. This means that the <code>addButtonToView</code> method has to change to accommodate an index value:</p>
<p><code>- (void)addButtonToView:(UIView *)view forImageName:(NSString *)name<br />
&nbsp;&nbsp;&nbsp;&nbsp;withIndex:(int)index;</code></p>
<p>
And to use that we have to change to a traditional for loop to set the show pinwheel images:
</p>
<p><code>NSArray *shows = [NSArray arrayWithObjects:@"dateline_rest.png", @"hardball_rest.png", @"meetthepress_rest.png", @"morningjoe_rest.png", @"nightlynews_rest.png", @"rachelmaddow_rest.png", @"todayshow_rest.png", @"shows_disabled0.png", @"shows_disabled1.png", @"shows_disabled2.png", @"shows_disabled3.png", @"shows_disabled4.png", nil];</p>
<p>for (int i = 0; i < [shows count]; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;NSString *show = [shows objectAtIndex:i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self addButtonToView:pinWheel forImageName:show withIndex:i];<br />
}</code></p>
<h2>Disabling the Disabled Buttons</h2>
<p>
Within the Shows section there are 5 buttons that are disabled. We can code that up easily by setting <code>userInteractionEnabled = false</code>. This also means that we need to break up the shows array by those pinwheels that are enabled and disabled. Then we can add another parameter to the <code>addImageToView</code> method which will set <code>userInteractionEnabled</code>: </p>
<p><code>- (void)addButtonToView:(UIView *)view forImageName:(NSString *)name withIndex:(int)index setEnabledTo:(BOOL)enabled {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// button creation &#038; setup code</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;[button setUserInteractionEnabled:enabled];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[view addSubview:button];<br />
}</code></p>
<p>
And the enabled/disabled arrays are going to look like this:
</p>
<p><code>NSArray *shows = [NSArray arrayWithObjects:@"dateline_rest.png", @"hardball_rest.png", @"meetthepress_rest.png", @"morningjoe_rest.png", @"nightlynews_rest.png", @"rachelmaddow_rest.png", @"todayshow_rest.png", nil];<br />
for (int i = 0; i < [shows count]; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;NSString *show = [shows objectAtIndex:i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self addButtonToView:pinWheel forImageName:show<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;withIndex:i setEnabledTo:true];<br />
}</p>
<p>NSArray *disabledButtons = [NSArray arrayWithObjects:@"shows_disabled0.png", @"shows_disabled1.png", @"shows_disabled2.png", @"shows_disabled3.png", @"shows_disabled4.png", nil];<br />
for (NSString *disabledButton in disabledButtons) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self addButtonToView:pinWheel forImageName:show<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;withIndex:-1 setEnabledTo:false];<br />
}</code></p>
<p>As we conclude, we end up with the following: a nice background, some pinwheel buttons, and some disabled buttons. As well you've likely picked up some new skills: How to figure out how an app is built, how to use arrays to simplify your code, how to make an animation without using animations, and how to create a non-rectangular button.</p>
<p>As always I've uploaded the <a href="https://github.com/gavingmiller/MSNBC-Pinwheel">sample code to GitHub</a> so that you can play with it on your own. Leave a comment if you've got an app you'd like to see reverse engineered, or if you've got a better way to do the highlighting animation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/04/making-the-msnbc-pinwheel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baby Speak: Bridging Communication Gaps Between Toddlers and Parents</title>
		<link>http://www.yycapps.com/2012/03/baby-speak-bridging-communication-gaps-between-toddlers-and-parents/</link>
		<comments>http://www.yycapps.com/2012/03/baby-speak-bridging-communication-gaps-between-toddlers-and-parents/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 13:25:46 +0000</pubDate>
		<dc:creator>Connor Turner</dc:creator>
				<category><![CDATA[App News]]></category>
		<category><![CDATA[Calgary Developer Community News]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[Local Developer]]></category>
		<category><![CDATA[App Review]]></category>
		<category><![CDATA[Baby SpeaK: For Toddlers]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[Launch]]></category>
		<category><![CDATA[Local IPhone Buzz]]></category>
		<category><![CDATA[ToMarket Inc]]></category>
		<category><![CDATA[yycApps]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=171</guid>
		<description><![CDATA[My wife and I are not parents, but we do fall into the demographic where a good majority of our close friends are quickly starting their own family. When we ask them what their biggest frustration is &#8211; within our circle of friends at least &#8211; the overwhelming response is the inability to anticipate their [...]]]></description>
			<content:encoded><![CDATA[<p>My wife and I are not parents, but we do fall into the demographic where a good majority of our close friends are quickly starting their own family. When we ask them what their biggest frustration is &#8211; within our circle of friends at least &#8211; the overwhelming response is the inability to anticipate their child&#8217;s needs. Luckily for today&#8217;s new parent we have the portability and simplicity of modern technology to help out. Because of which Calgary based <a href="http://http://www.tomarket.ca/tomarket-apps/" target="_blank">ToMarket Inc</a> has released the new <strong><a href="http://www.google.com/url?sa=t&#038;rct=j&#038;q=&#038;esrc=s&#038;source=web&#038;cd=1&#038;ved=0CD0QFjAA&#038;url=http%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fbaby-speak-for-toddlers-6%2Fid503903050%3Fmt%3D8&#038;ei=DtVrT4vfDoLu0gG1m_jmBg&#038;usg=AFQjCNEhzx1Ppq8XXJfRI5Nk5-mwBsEk0g" target="_blank">Baby Speak: For Toddlers</a></strong> for the iPhone and iPad.<span id="more-171"></span><a href="http://www.yycapps.com/wp-content/uploads/2012/03/babyspeak2.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/03/babyspeak2.png" alt="Baby Speak: For Todlers" title="babyspeak2" width="250" height="163" class="left size-full wp-image-172" /></a></p>
<p>Baby Speak is designed as a enhanced communication tool between parents and their toddlers. The initial version of the app comes loaded with four essential words for communication with toddlers, while an in-app purchase unlocks a full spectrum of 28 essential words. When launched users are greeted with an beautiful loading screen which leads in to a simple menu screen allowing the user to display a combination of one, two, four, or all words at once. Each of the words when displayed is tied to a colourful illustration and when touched by the child, a calm voice reiterates the selection. The fundamental concept of Baby Speak is to provide a visual connection between common communication words and to help speed up the learning curve for toddlers. The real benefit for parents with Baby Speak is that it does away with carrying around a set of cumbersome image cards or other tools, and instead allows tech savvy parents to have a functional tool within their iPhone or iPad.</p>
<p><a href="http://www.yycapps.com/wp-content/uploads/2012/03/babyspeak1.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/03/babyspeak1.png" alt="Baby Speak: For Toddlers - Yes/No" title="babyspeak1" width="250" height="163" class="right size-full wp-image-174" /></a> The app itself is simplistic and elegantly designed. It looks great on both the small screen of an iPhone or iPod Touch and also on the larger real estate of the iPad. The touch interface is easy to use and navigation is intuitive. The voice work is clear, concise, and extremely easy to understand. The mechanics of the app are superb, as there is no slow down and lag, even with multiple consecutive touches. Overal Baby Speak: For Toddlers is a concise and tightly developed app. </p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/uogWltacwHE" frameborder="0" allowfullscreen></iframe> </p>
<p>So if you&#8217;re a new parent or you have friends who are just stepping into the world of Toddlers, arm yourself with Baby Speak: For Toddlers &#8211; you won&#8217;t regret it. </p>
<p><a href="http://itunes.apple.com/us/app/baby-speak-for-toddlers-6/id503903050?mt=8" target="_blank"><img src="http://ax.phobos.apple.com.edgesuite.net/images/web/linkmaker/badge_appstore-lrg.gif" alt="Available in the iTunes Store" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/03/baby-speak-bridging-communication-gaps-between-toddlers-and-parents/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Anthm App: Bring Musical Order to Your Parties</title>
		<link>http://www.yycapps.com/2012/03/anthm-app-bring-musical-order-to-your-parties/</link>
		<comments>http://www.yycapps.com/2012/03/anthm-app-bring-musical-order-to-your-parties/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 13:36:29 +0000</pubDate>
		<dc:creator>Kevin Dubienski</dc:creator>
				<category><![CDATA[App Reviews]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[Local Success]]></category>
		<category><![CDATA[Anthm App]]></category>
		<category><![CDATA[App Review]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[iPhone Development Community]]></category>
		<category><![CDATA[Local IPhone Buzz]]></category>
		<category><![CDATA[Rdio]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=164</guid>
		<description><![CDATA[Finding that perfect playlist to please the masses is a tough feat! We the user can utilize services like Myspace, SoundCloud, Grooveshark (and lots more) to keep us in-tune with an artists latest tracks, yet these communities don&#8217;t allow for collaboration. Anthm app is the first solution for passionate music lovers bickering over what music [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yycapps.com/wp-content/uploads/2012/03/anthm2.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/03/anthm2.png" alt="The Anthm App" title="The Anthm App" width="180" height="275" class="left size-full wp-image-165" /></a>Finding that perfect playlist to please the masses is a tough feat!  We the user can utilize services like Myspace, SoundCloud, Grooveshark (and lots more) to keep us in-tune with an artists latest tracks, yet these communities don&#8217;t allow for collaboration. <a href="http://anthmapp.com/" target="_blank">Anthm app</a> is the first solution for passionate music lovers bickering over what music should be blasting.</p>
<p>Anthm was developed by Paul Thorsteinson from Calgary, AB and designed by Ben Myers (<a href="http://iamhabitat.tv/" target="_blank">iamhabitat.tv</a>), Paul Beaudry, and Tyler Johnston from Winnipeg, MB. The app is a 21st Century jukebox allowing users to create a party (aka playlist), invite friends to join this party and start sharing the task of creating a playlist.  Once one or more people have been added to the playlist, everyone gets an up/down vote for each track. The songs with the most up-votes play first, and those with the most down votes play last.  The concept is simple but the end result is an interactive musical experience for everyone linked into your party.<span id="more-164"></span></p>
<p><a href="http://www.yycapps.com/wp-content/uploads/2012/03/anthm1.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/03/anthm1.png" alt="The Anthm App - Launch Screen" title="The Anthm App - Launch Screen" width="180" height="275" class="right size-full wp-image-167" /></a>Before you can start using this app you&#8217;ll need to sign up to <a href="http://www.rdio.com/" target="_blank">Rdio</a>, which I dare say is like a YouTube of music. There&#8217;s a free trial if you don&#8217;t have an account, and monthly usage fees start at $4.99.  Though $4.99 may sound a little steep, you get access to over 12 million tracks across much of North America, Europe, and a few other locations.  You can also access music online and offline across desktops and smartphones.</p>
<p>From a design perspective Anthm is elegant and the user experience is stupid simple. Once you&#8217;ve watched the how-to video you should have the navigation and use of Anthm down pat. Jumping between the three tabs of this app is fluid and fast showing off the skill of Paul Thorsteinson&#8217;s code.</p>
<p>I chatted with Ben Myers from this project, asking about the future road map for Anthm. He responded with &#8220;<em>We&#8217;re in the process of <a href="http://www.spotify.com/int/" target="_blank">incorporating Spotify</a> as one of the services as well as our own service that will allow venues to subscribe to a Monthly streaming service for their business.</em>&#8221;  Personally, I can&#8217;t wait to see what this app turns into and super kudos to the creators!</p>
<p>We here at yycApps are excited to use the future apps created by this team and <a href="http://click.linksynergy.com/fs-bin/stat?id=W*UdyFyntcY&#038;offerid=162397&#038;type=3&#038;subid=0&#038;tmpid=3664&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fca%252Fapp%252Fanthm-powered-by-rdio%252Fid500582930%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store">encourage you to give it a try</a>.</p>
<p><a href="http://click.linksynergy.com/fs-bin/stat?id=W*UdyFyntcY&#038;offerid=162397&#038;type=3&#038;subid=0&#038;tmpid=3664&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fca%252Fapp%252Fanthm-powered-by-rdio%252Fid500582930%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"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/03/anthm-app-bring-musical-order-to-your-parties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Robots &amp; Pencils Launches Catch The Princess</title>
		<link>http://www.yycapps.com/2012/01/robots-pencils-launches-catch-the-princess/</link>
		<comments>http://www.yycapps.com/2012/01/robots-pencils-launches-catch-the-princess/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:32:36 +0000</pubDate>
		<dc:creator>Connor Turner</dc:creator>
				<category><![CDATA[App Reviews]]></category>
		<category><![CDATA[Calgary Developer Community News]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[Local Developer]]></category>
		<category><![CDATA[App Review]]></category>
		<category><![CDATA[Catch The Princess]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[iPhone Development Community]]></category>
		<category><![CDATA[Robots & Pencils]]></category>
		<category><![CDATA[yycApps]]></category>

		<guid isPermaLink="false">http://www.yycapps.com/?p=158</guid>
		<description><![CDATA[We here at yycapps.com hope that everyone had a fantastic New Years and even better Holiday Season. The Calgary app community was rather quiet in December, but it&#8217;s looking like January 2012 is shaping up to be a whole different story. The rumor mill is a buzz with some very exciting launches in the next [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yycapps.com/wp-content/uploads/2012/01/ctp1.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/01/ctp1.png" alt="" title="Catch The Princess" width="180" height="275" class="left" /></a>We here at yycapps.com hope that everyone had a fantastic New Years and even better Holiday Season. The Calgary app community was rather quiet in December, but it&#8217;s looking like January 2012 is shaping up to be a whole different story. The rumor mill is a buzz with some very exciting launches in the next few weeks, and first up on the must see list is <a href="http://robotsandpencils.com/factory/catch-the-princess/" title="Catch The Princess">Robots &#038; Pencils new app Catch The Princess</a>.</p>
<p>Catch the Princess is an addictive and gorgeous new puzzler, where users are tasked with protecting a Princess through 60 levels of intense game play. The game is already garnishing some great buzz from the <a href="http://toucharcade.com/2011/12/16/moody-and-pretty-check-out-catch-the-princess/" target="_blank" title="Catch The Princess Review on Touch Arcade">gurus at TouchArcade</a>. And if that high profile review alone doesn&#8217;t wet your appetite, check out the 60 second intro video below to see why this is one of the most buzzed about apps to come out of Calgary in quite some time. <span id="more-158"></span></p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/yyXJHgZkopE" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://www.yycapps.com/wp-content/uploads/2012/01/ctp2.png"><img src="http://www.yycapps.com/wp-content/uploads/2012/01/ctp2.png" alt="" title="Catch The Princess" width="180" height="275" class="right" /></a>The game looks absolutely stunning on the HD screen of the iPad. From the opening seconds of the launch, you know you are in for an incredible treat. The stunning animation and picturesque feel of each level invokes a dark and sombre aura akin to something out of The Portrait of Dorain Grey. Catch The Princess is one of the few games to really understand the importance of ambiance, mood and mystery &#8211; and it absolutely nails it. The game play and game mechanics are incredibly well done. It&#8217;s clear that a great deal of time and effort, was spent testing these elements out and it pays off in the addictive nature of the game. The sound track and effects are equally as moody and tie in nicely to the entire user experience.</p>
<p>Catch The Princess is out now and available on the <a href="http://click.linksynergy.com/fs-bin/stat?id=W*UdyFyntcY&#038;offerid=162397&#038;type=3&#038;subid=0&#038;tmpid=3664&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fca%252Fapp%252Fcatch-the-princess%252Fid485814769%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store">iPhone</a> and <a href="http://click.linksynergy.com/fs-bin/stat?id=W*UdyFyntcY&#038;offerid=162397&#038;type=3&#038;subid=0&#038;tmpid=3664&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fca%252Fapp%252Fcatch-the-princess-hd%252Fid485816372%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store">iPad</a>. To celebrate the launch we&#8217;ve got a Promo Code for one lucky reader for the iPhone version of the app. (<em>All you have to do is send us a quick tweet with &#8220;I wanna Play Catch The Princess&#8221; and we&#8217;ll DM you the code</em>)</p>
<p><a href="http://click.linksynergy.com/fs-bin/stat?id=W*UdyFyntcY&#038;offerid=162397&#038;type=3&#038;subid=0&#038;tmpid=3664&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fca%252Fapp%252Fcatch-the-princess%252Fid485814769%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"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yycapps.com/2012/01/robots-pencils-launches-catch-the-princess/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.yycapps.com/feed/ ) in 0.55223 seconds, on May 19th, 2012 at 4:21 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 19th, 2012 at 5:21 pm UTC -->
