<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for As The Code Grows</title>
	<atom:link href="http://asthecodegrows.robertbeverly.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://asthecodegrows.robertbeverly.com</link>
	<description>...may the search engines help me discover what I forgot I knew.</description>
	<lastBuildDate>Sun, 15 Jan 2012 18:12:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Comment on Stretching a 1-pixel image to make a resizeable border or shadow by Robert Beverly</title>
		<link>http://asthecodegrows.robertbeverly.com/2012/01/01/stretching-a-1-pixel-image-to-make-a-resizeable-border-or-shadow/#comment-131</link>
		<dc:creator>Robert Beverly</dc:creator>
		<pubDate>Sun, 15 Jan 2012 18:12:19 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=173#comment-131</guid>
		<description>Interesting... here&#039;s &lt;a href=&quot;http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch&quot; rel=&quot;nofollow&quot;&gt;a link&lt;/a&gt;. I guess that&#039;s what they use for their resizeable buttons. Thanks Greg :)</description>
		<content:encoded><![CDATA[<p>Interesting&#8230; here&#8217;s <a href="http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch" rel="nofollow">a link</a>. I guess that&#8217;s what they use for their resizeable buttons. Thanks Greg :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Stretching a 1-pixel image to make a resizeable border or shadow by Greg Lincoln</title>
		<link>http://asthecodegrows.robertbeverly.com/2012/01/01/stretching-a-1-pixel-image-to-make-a-resizeable-border-or-shadow/#comment-130</link>
		<dc:creator>Greg Lincoln</dc:creator>
		<pubDate>Sun, 15 Jan 2012 13:52:34 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=173#comment-130</guid>
		<description>Android has a &quot;file format&quot; (really just an image with some magic lines at the edges) called 9-patch that allows you to set this up automagically. It&#039;s neat!

http://developer.android.com/guide/developing/tools/draw9patch.html</description>
		<content:encoded><![CDATA[<p>Android has a &#8220;file format&#8221; (really just an image with some magic lines at the edges) called 9-patch that allows you to set this up automagically. It&#8217;s neat!</p>
<p><a href="http://developer.android.com/guide/developing/tools/draw9patch.html" rel="nofollow">http://developer.android.com/guide/developing/tools/draw9patch.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Convert plist to JSON by Robert Beverly</title>
		<link>http://asthecodegrows.robertbeverly.com/2011/12/20/convert-plist-to-json/#comment-124</link>
		<dc:creator>Robert Beverly</dc:creator>
		<pubDate>Fri, 06 Jan 2012 03:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=153#comment-124</guid>
		<description>Hi, you can find the batch version here: &lt;a href=&quot;https://sourceforge.net/projects/plist2json/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://sourceforge.net/projects/plist2json/&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Hi, you can find the batch version here: <a href="https://sourceforge.net/projects/plist2json/" target="_blank" rel="nofollow">https://sourceforge.net/projects/plist2json/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Convert plist to JSON by acca</title>
		<link>http://asthecodegrows.robertbeverly.com/2011/12/20/convert-plist-to-json/#comment-122</link>
		<dc:creator>acca</dc:creator>
		<pubDate>Fri, 06 Jan 2012 03:40:49 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=153#comment-122</guid>
		<description>Can I have the batch processing version? My email address is vanlen@126.com. Thanks in advance.</description>
		<content:encoded><![CDATA[<p>Can I have the batch processing version? My email address is <a href="mailto:vanlen@126.com">vanlen@126.com</a>. Thanks in advance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Python 2.7 and XCode 4 by Robert Beverly</title>
		<link>http://asthecodegrows.robertbeverly.com/2011/12/01/python-2-7-and-xcode-4/#comment-118</link>
		<dc:creator>Robert Beverly</dc:creator>
		<pubDate>Wed, 04 Jan 2012 17:06:33 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=148#comment-118</guid>
		<description>Just a quick comment... I&#039;m using the unittest and pdb modules for testing and debugging. If at one time I had a strong desire to use LLDB, that desire has faded away. Similarly, I don&#039;t find myself setting up XCode projects for my python scripts. A lot of the benefits of XCode are only benefits when you&#039;re programming for iOS or OS X.</description>
		<content:encoded><![CDATA[<p>Just a quick comment&#8230; I&#8217;m using the unittest and pdb modules for testing and debugging. If at one time I had a strong desire to use LLDB, that desire has faded away. Similarly, I don&#8217;t find myself setting up XCode projects for my python scripts. A lot of the benefits of XCode are only benefits when you&#8217;re programming for iOS or OS X.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Batch plist to JSON conversion by Convert plist to JSON</title>
		<link>http://asthecodegrows.robertbeverly.com/2011/12/29/batch-plist-to-json-conversion/#comment-112</link>
		<dc:creator>Convert plist to JSON</dc:creator>
		<pubDate>Thu, 29 Dec 2011 16:16:30 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=167#comment-112</guid>
		<description>[...] see my plist2json post for a better [...]</description>
		<content:encoded><![CDATA[<p>[...] see my plist2json post for a better [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The application-identifier entitlement is not formatted correctly by Robert Beverly</title>
		<link>http://asthecodegrows.robertbeverly.com/2010/07/11/the-application-identifier-entitlement-is-not-formatted-correctly/#comment-70</link>
		<dc:creator>Robert Beverly</dc:creator>
		<pubDate>Tue, 10 May 2011 20:00:05 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=43#comment-70</guid>
		<description>I haven’t run into problems with Xcode 4 yet. Take a look at the first answer here though and see if it fixes your problem:

http://stackoverflow.com/questions/5449487/iphone-entitlements-problem-with-xcode-4-for-ad-hoc-distribution

Its probably easiest to edit as text rather than using the plist editor.</description>
		<content:encoded><![CDATA[<p>I haven’t run into problems with Xcode 4 yet. Take a look at the first answer here though and see if it fixes your problem:</p>
<p><a href="http://stackoverflow.com/questions/5449487/iphone-entitlements-problem-with-xcode-4-for-ad-hoc-distribution" rel="nofollow">http://stackoverflow.com/questions/5449487/iphone-entitlements-problem-with-xcode-4-for-ad-hoc-distribution</a></p>
<p>Its probably easiest to edit as text rather than using the plist editor.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The application-identifier entitlement is not formatted correctly by Jay Imerman</title>
		<link>http://asthecodegrows.robertbeverly.com/2010/07/11/the-application-identifier-entitlement-is-not-formatted-correctly/#comment-68</link>
		<dc:creator>Jay Imerman</dc:creator>
		<pubDate>Tue, 10 May 2011 18:37:23 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=43#comment-68</guid>
		<description>Do you have any updates for XCode 4?  When I create a new Entitlements.plist file, it only has one line for allowing debugging.  I am getting the error on build for archiving, even before I can upload to iTunes.  When i send the bundle to a tester in my provisioning profile, he can&#039;t install it because of improper entitlements.</description>
		<content:encoded><![CDATA[<p>Do you have any updates for XCode 4?  When I create a new Entitlements.plist file, it only has one line for allowing debugging.  I am getting the error on build for archiving, even before I can upload to iTunes.  When i send the bundle to a tester in my provisioning profile, he can&#8217;t install it because of improper entitlements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A CAAnimationGroup Mystery by Robert Beverly</title>
		<link>http://asthecodegrows.robertbeverly.com/2010/05/22/a-caanimationgroup-mystery/#comment-13</link>
		<dc:creator>Robert Beverly</dc:creator>
		<pubDate>Sat, 26 Jun 2010 08:08:37 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=4#comment-13</guid>
		<description>Christopher,
Here are a few things to try. First, see if adding this helps:
&lt;code&gt;
// in ani1
[ani1 setFillMode:kCAFillModeForwards]; 
//and in ani2
[ani2 setFillMode:kCAFillModeForwards]; 
&lt;/code&gt;
That is likely to solve your problem. Here&#039;s a description of fillMode from Apple&#039;s documentation:
&lt;cite&gt;
kCAFillModeForwards
The receiver remains visible in its final state when the animation is completed.
Available in iPhone OS 2.0 and later.
Declared in CAMediaTiming.h.
&lt;/cite&gt;

If that does not help, look at where you apply the animations to a layer, and also set the value of the layer to the end value of the animations. In your case, you might have to work around the timing of different animations or separate them into two groups. You can use setAnimationDidStopSelector to fire group two in that case. 

Whatever implementation details you choose, make sure you understand that the animations you add don&#039;t change the actual layer properties outside of the animation. So, the layer has a &quot;transform&quot; of  &quot;x&quot; before you animate it. Then you animate it and give the animation a &quot;transform&quot; of f(x) ... but that new transform only exists in the animation, and when the animation is removed your layer will be teleported back to its real location.

Let me know if this works for you. Good luck.</description>
		<content:encoded><![CDATA[<p>Christopher,<br />
Here are a few things to try. First, see if adding this helps:<br />
<code><br />
// in ani1<br />
[ani1 setFillMode:kCAFillModeForwards];<br />
//and in ani2<br />
[ani2 setFillMode:kCAFillModeForwards];<br />
</code><br />
That is likely to solve your problem. Here&#8217;s a description of fillMode from Apple&#8217;s documentation:<br />
<cite><br />
kCAFillModeForwards<br />
The receiver remains visible in its final state when the animation is completed.<br />
Available in iPhone OS 2.0 and later.<br />
Declared in CAMediaTiming.h.<br />
</cite></p>
<p>If that does not help, look at where you apply the animations to a layer, and also set the value of the layer to the end value of the animations. In your case, you might have to work around the timing of different animations or separate them into two groups. You can use setAnimationDidStopSelector to fire group two in that case. </p>
<p>Whatever implementation details you choose, make sure you understand that the animations you add don&#8217;t change the actual layer properties outside of the animation. So, the layer has a &#8220;transform&#8221; of  &#8220;x&#8221; before you animate it. Then you animate it and give the animation a &#8220;transform&#8221; of f(x) &#8230; but that new transform only exists in the animation, and when the animation is removed your layer will be teleported back to its real location.</p>
<p>Let me know if this works for you. Good luck.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A CAAnimationGroup Mystery by Christopher Burns</title>
		<link>http://asthecodegrows.robertbeverly.com/2010/05/22/a-caanimationgroup-mystery/#comment-12</link>
		<dc:creator>Christopher Burns</dc:creator>
		<pubDate>Fri, 25 Jun 2010 22:02:14 +0000</pubDate>
		<guid isPermaLink="false">http://asthecodegrows.robertbeverly.com/?p=4#comment-12</guid>
		<description>Hey there,

I happened across this post looking for an answer to this exact issue... however, even setting removedOnCompletion for the group does not seem to prevent the snapping.

I have a group that sequences 4 animations.  The first to work in tandem, and the second two fire off (again, in tandem) right after the first set completes.  As soon as the first set completes, the image snaps back and then the second set begins.

This cannot be that hard, but it is killing me...  Here is the code... do you see anything obviously wrong?
&lt;code&gt;
- (CAAnimationGroup *)aniFromColor:(CGColorRef)fromCol toColor:(CGColorRef)toCol {
	FlipLayer3View *v = (FlipLayer3View *)[self view];
	const CGFloat *fromColors = CGColorGetComponents(fromCol);
	const CGFloat *toColors = CGColorGetComponents(toCol);
	
	ani1 = [CABasicAnimation animationWithKeyPath:@&quot;transform&quot;];
	[ani1 setDelegate:self];
	[ani1 setDuration:dur];
	[ani1 setToValue:[NSValue valueWithCATransform3D:CATransform3DConcat(v.theSquare.transform, CATransform3DRotate(CATransform3DIdentity, M_PI/2, -1, 1, 0))]];
	[ani1 setValue:@&quot;shrink&quot; forKey:@&quot;name&quot;];
	[ani1 setRemovedOnCompletion:NO];
	
	ani2 = [CABasicAnimation animationWithKeyPath:@&quot;backgroundColor&quot;];
	UIColor *c1 = [UIColor colorWithRed:(fromColors[0]/2.0f) green:(fromColors[1]/2.0f) blue:(fromColors[2]/2.0f) alpha:1.0f];
	[ani2 setDuration:dur];
	[ani2 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
	[ani2 setToValue:(id)c1.CGColor];
	[ani2 setValue:@&quot;dim&quot; forKey:@&quot;name&quot;];
	[ani2 setRemovedOnCompletion:NO];
	
	ani3 = [CABasicAnimation animationWithKeyPath:@&quot;transform&quot;];
	[ani3 setDelegate:self];
	[ani3 setDuration:dur];
	[ani3 setToValue:[NSValue valueWithCATransform3D:CATransform3DConcat(v.theSquare.transform, CATransform3DRotate(CATransform3DIdentity, M_PI/2, -1, 1, 0))]];
	[ani3 setValue:@&quot;grow&quot; forKey:@&quot;name&quot;];
	[ani3 setBeginTime:dur];
	[ani3 setRemovedOnCompletion:NO];
	
	ani4 = [CABasicAnimation animationWithKeyPath:@&quot;backgroundColor&quot;];
	UIColor *c2 = [UIColor colorWithRed:(toColors[0]/2.0f) green:(toColors[1]/2.0f) blue:(toColors[2]/2.0f) alpha:1.0f];
	[ani4 setDuration:dur];
	[ani4 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
	[ani4 setFromValue:(id)c2.CGColor];
	[ani4 setToValue:(id)toCol];
	[ani4 setValue:@&quot;glow&quot; forKey:@&quot;name&quot;];
	[ani4 setBeginTime:dur];
	[ani4 setRemovedOnCompletion:NO];
	
	aniGroup = [CAAnimationGroup animation];
	[aniGroup setDuration:dur*2];
	[aniGroup setAnimations:[NSArray arrayWithObjects:ani1, ani2, ani3, ani4, nil]];
	[aniGroup setRemovedOnCompletion:NO];
	
	return aniGroup;
}
&lt;/code&gt;

Thanks for any insight,

Chris</description>
		<content:encoded><![CDATA[<p>Hey there,</p>
<p>I happened across this post looking for an answer to this exact issue&#8230; however, even setting removedOnCompletion for the group does not seem to prevent the snapping.</p>
<p>I have a group that sequences 4 animations.  The first to work in tandem, and the second two fire off (again, in tandem) right after the first set completes.  As soon as the first set completes, the image snaps back and then the second set begins.</p>
<p>This cannot be that hard, but it is killing me&#8230;  Here is the code&#8230; do you see anything obviously wrong?<br />
<code><br />
- (CAAnimationGroup *)aniFromColor:(CGColorRef)fromCol toColor:(CGColorRef)toCol {<br />
	FlipLayer3View *v = (FlipLayer3View *)[self view];<br />
	const CGFloat *fromColors = CGColorGetComponents(fromCol);<br />
	const CGFloat *toColors = CGColorGetComponents(toCol);</p>
<p>	ani1 = [CABasicAnimation animationWithKeyPath:@"transform"];<br />
	[ani1 setDelegate:self];<br />
	[ani1 setDuration:dur];<br />
	[ani1 setToValue:[NSValue valueWithCATransform3D:CATransform3DConcat(v.theSquare.transform, CATransform3DRotate(CATransform3DIdentity, M_PI/2, -1, 1, 0))]];<br />
	[ani1 setValue:@"shrink" forKey:@"name"];<br />
	[ani1 setRemovedOnCompletion:NO];</p>
<p>	ani2 = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];<br />
	UIColor *c1 = [UIColor colorWithRed:(fromColors[0]/2.0f) green:(fromColors[1]/2.0f) blue:(fromColors[2]/2.0f) alpha:1.0f];<br />
	[ani2 setDuration:dur];<br />
	[ani2 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];<br />
	[ani2 setToValue:(id)c1.CGColor];<br />
	[ani2 setValue:@"dim" forKey:@"name"];<br />
	[ani2 setRemovedOnCompletion:NO];</p>
<p>	ani3 = [CABasicAnimation animationWithKeyPath:@"transform"];<br />
	[ani3 setDelegate:self];<br />
	[ani3 setDuration:dur];<br />
	[ani3 setToValue:[NSValue valueWithCATransform3D:CATransform3DConcat(v.theSquare.transform, CATransform3DRotate(CATransform3DIdentity, M_PI/2, -1, 1, 0))]];<br />
	[ani3 setValue:@"grow" forKey:@"name"];<br />
	[ani3 setBeginTime:dur];<br />
	[ani3 setRemovedOnCompletion:NO];</p>
<p>	ani4 = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];<br />
	UIColor *c2 = [UIColor colorWithRed:(toColors[0]/2.0f) green:(toColors[1]/2.0f) blue:(toColors[2]/2.0f) alpha:1.0f];<br />
	[ani4 setDuration:dur];<br />
	[ani4 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];<br />
	[ani4 setFromValue:(id)c2.CGColor];<br />
	[ani4 setToValue:(id)toCol];<br />
	[ani4 setValue:@"glow" forKey:@"name"];<br />
	[ani4 setBeginTime:dur];<br />
	[ani4 setRemovedOnCompletion:NO];</p>
<p>	aniGroup = [CAAnimationGroup animation];<br />
	[aniGroup setDuration:dur*2];<br />
	[aniGroup setAnimations:[NSArray arrayWithObjects:ani1, ani2, ani3, ani4, nil]];<br />
	[aniGroup setRemovedOnCompletion:NO];</p>
<p>	return aniGroup;<br />
}<br />
</code></p>
<p>Thanks for any insight,</p>
<p>Chris</p>
]]></content:encoded>
	</item>
</channel>
</rss>

