<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-55286706766643200</id><updated>2024-09-05T16:45:39.432-07:00</updated><category term="Slide out animation"/><title type='text'>Puru&#39;s Blog</title><subtitle type='html'>iOS, Objective C, Core Data, Core Animation, UIKit, Core Networking, Cocoa Touch, GCD &amp;amp; Block, KVO/KVC,  System Programming, Mobile Technology</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-55286706766643200.post-2353777211176207659</id><published>2013-02-14T11:19:00.000-08:00</published><updated>2013-02-14T15:36:29.652-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Slide out animation"/><title type='text'>New Slide Out Animation for iOS (contd.)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This post is a continuation to my previous &lt;a href=&quot;http://purushukla.blogspot.com/2013/02/new-slide-out-animation-for-ios.html&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt;. In that post I showed how to create a view and add a slide out animation just like facebook.&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
What we did so far...&lt;/h2&gt;
&lt;div&gt;
In the last post we created a view and added two subviews to it 1. A mapview 2. A tableview. We also added a menu button in the navigation bar. Upon press of the menu button we presented the &lt;i&gt;tableview &lt;/i&gt;from the left side of the screen using a &lt;i&gt;ease-in &lt;/i&gt;animation option of the &lt;i&gt;UIView. &lt;/i&gt;The following method performs the actual animation of the subviews:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;div class=&quot;p1&quot;&gt;
-(&lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt;)menuButtonAction:(&lt;span class=&quot;s1&quot;&gt;id&lt;/span&gt;)sender{&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UIView&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;animateWithDuration&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;.25&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;delay&lt;/span&gt;:&lt;span class=&quot;s4&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;options&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;UIViewAnimationOptionCurveEaseIn&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;animations&lt;/span&gt;:^{&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;if&lt;/span&gt;(!&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;tableViewVisible&lt;/span&gt;){&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; tableFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;tableView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; mapViewFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;mkMapView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s7&quot;&gt;//show the table view first&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;tableViewVisible&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;YES&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;//change the initial location of the map view&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mapViewFrame.&lt;span class=&quot;s3&quot;&gt;origin&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;x&lt;/span&gt; = tableFrame.&lt;span class=&quot;s3&quot;&gt;size&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;width&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;mkMapView&lt;/span&gt; &lt;span class=&quot;s5&quot;&gt;setFrame&lt;/span&gt;:mapViewFrame];&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;span class=&quot;s1&quot;&gt;else&lt;/span&gt;{&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; mapViewFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;mkMapView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mapViewFrame.&lt;span class=&quot;s3&quot;&gt;origin&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;x&lt;/span&gt; = &lt;span class=&quot;s4&quot;&gt;0.0&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;mkMapView&lt;/span&gt; &lt;span class=&quot;s5&quot;&gt;setFrame&lt;/span&gt;:mapViewFrame];&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;tableViewVisible&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;NO&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;completion&lt;/span&gt;:^(&lt;span class=&quot;s1&quot;&gt;BOOL&lt;/span&gt; finished) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
}&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Animating the view with navigation bar&lt;/h2&gt;
&lt;div&gt;
If you have noticed in the previous sample the navigation bar does not animate. It stays wherever it was. But in the facebook app, it does slide out the navigation bar as well. So how do we do it? Well...put the navigation bar in the view. Let&#39;s do it:&lt;br /&gt;
&lt;br /&gt;
In the sample I have created a M&lt;i&gt;ainViewController &lt;/i&gt;which has it&#39;s two views that it wants to animate. This is how my &lt;i&gt;storyboard &lt;/i&gt;looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Iy_ViiBg_U9zbEFJcoZU5n4a2oxUreA9VSFfCH1BfRlYtp7ZrysugnDfU05I0mp0N1aN_nwapt0k05TwRngrHWFsPmMgNWkK4XgY_jFzIPFIDsWpHXwpmXkNH6PnNe7lxTuPFsHwEqc/s1600/Screen+Shot+2013-02-12+at+9.18.53+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;420&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Iy_ViiBg_U9zbEFJcoZU5n4a2oxUreA9VSFfCH1BfRlYtp7ZrysugnDfU05I0mp0N1aN_nwapt0k05TwRngrHWFsPmMgNWkK4XgY_jFzIPFIDsWpHXwpmXkNH6PnNe7lxTuPFsHwEqc/s640/Screen+Shot+2013-02-12+at+9.18.53+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;i&gt;MainViewController &lt;/i&gt;has a &lt;i&gt;topView &lt;/i&gt;as its view&lt;i&gt;, topView &lt;/i&gt;has two main &lt;i&gt;sub views &lt;/i&gt;1. Primary View 2. Secondary View. These are the two views that we are going to animate.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Primary view has a &lt;i&gt;navigation bar and a map view &lt;/i&gt;as its subviews. Navigation bar has a &lt;i&gt;bar item &lt;/i&gt;(I used the system bookmark item because I could not find the correct menu image for my bar item in a such asmall time) which will actually trigger the &lt;i&gt;slide out &lt;/i&gt;navigation.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Secondary View has a &lt;i&gt;search bar and a collection view &lt;/i&gt;as its sub views. Secondary view is below the primary view in the view &lt;i&gt;hierarchy&lt;/i&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The &lt;i&gt;MainViewController.h &lt;/i&gt;file has two &lt;i&gt;IBOutlet&lt;/i&gt; properties and an &lt;i&gt;IBAction &lt;/i&gt;for the &lt;i&gt;menu button action:&lt;/i&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;@interface&lt;/span&gt; MainViewController : &lt;span class=&quot;s2&quot;&gt;UIViewController&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
@property&lt;span class=&quot;s3&quot;&gt; (&lt;/span&gt;strong&lt;span class=&quot;s3&quot;&gt;, &lt;/span&gt;nonatomic&lt;span class=&quot;s3&quot;&gt;) &lt;/span&gt;IBOutlet&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;UIView&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; *primaryView;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
@property&lt;span class=&quot;s3&quot;&gt; (&lt;/span&gt;strong&lt;span class=&quot;s3&quot;&gt;, &lt;/span&gt;nonatomic&lt;span class=&quot;s3&quot;&gt;) &lt;/span&gt;IBOutlet&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;UIView&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; *secondaryView;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
- (&lt;span class=&quot;s1&quot;&gt;IBAction&lt;/span&gt;)menuItemAction:(&lt;span class=&quot;s1&quot;&gt;id&lt;/span&gt;)sender;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
@end&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The &lt;i&gt;menu button action &lt;/i&gt;in the &lt;i&gt;MainViewController.m &lt;/i&gt;file looks like this:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;div class=&quot;p1&quot;&gt;
- (&lt;span class=&quot;s1&quot;&gt;IBAction&lt;/span&gt;)menuItemAction:(&lt;span class=&quot;s1&quot;&gt;id&lt;/span&gt;)sender {&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UIView&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;animateWithDuration&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;.25&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;delay&lt;/span&gt;:&lt;span class=&quot;s4&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;options&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;UIViewAnimationOptionCurveEaseIn&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;animations&lt;/span&gt;:^{&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;if&lt;/span&gt;(!&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;secondViewVisible&lt;/span&gt;){&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; secondaryViewFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;secondaryView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; primaryViewFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;primaryView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s7&quot;&gt;//show the table view first&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;secondViewVisible&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;YES&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; primaryViewFrame.&lt;span class=&quot;s3&quot;&gt;origin&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;x&lt;/span&gt; = secondaryViewFrame.&lt;span class=&quot;s3&quot;&gt;size&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;width&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;//change the initial location of the map view&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;primaryView&lt;/span&gt; &lt;span class=&quot;s5&quot;&gt;setFrame&lt;/span&gt;:primaryViewFrame];&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;span class=&quot;s1&quot;&gt;else&lt;/span&gt;{&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s3&quot;&gt;CGRect&lt;/span&gt; primaryViewFrame = &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;primaryView&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;frame&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; primaryViewFrame.&lt;span class=&quot;s3&quot;&gt;origin&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;x&lt;/span&gt; = &lt;span class=&quot;s4&quot;&gt;0.0&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;primaryView&lt;/span&gt; &lt;span class=&quot;s5&quot;&gt;setFrame&lt;/span&gt;:primaryViewFrame];&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;s6&quot;&gt;secondViewVisible&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;NO&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s5&quot;&gt;completion&lt;/span&gt;:^(&lt;span class=&quot;s1&quot;&gt;BOOL&lt;/span&gt; finished) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
}&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
The main idea behind animating the view still remains the same. It uses &lt;i&gt;UIView&#39;s&amp;nbsp;animateWithDuration &lt;/i&gt;method over a duration of &lt;i&gt;0.25 second &lt;/i&gt;to animate the two views. During the animation &lt;i&gt;primaryView&#39;s &lt;/i&gt;frame is changed and it&#39;s moved to the right side exposing the &lt;i&gt;secondaryView &lt;/i&gt;underneath it. Because we are not &lt;i&gt;hiding/unhiding&amp;nbsp;&lt;/i&gt;the &lt;i&gt;secondaryView,&amp;nbsp;&lt;/i&gt;the new &lt;i&gt;origin.x&lt;/i&gt;&amp;nbsp;of the frame of the &lt;i&gt;primaryView &lt;/i&gt;is calculated by subtracting the &lt;i&gt;width &lt;/i&gt;of the &lt;i&gt;secondaryView. &lt;/i&gt;For this reason you must set the width of the &lt;i&gt;secondary view&lt;/i&gt;&amp;nbsp;to the same amount by which you want your &lt;i&gt;primaryView &lt;/i&gt;to be displaced&lt;i&gt;.&lt;/i&gt;
&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
The video shows what the code does:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dywA63qeFHkgmbdNZ6Eo6fQnqXZIJJFULm_x0uJlPiW177ghFGFbeSgR2d2d2DuNlHkA8wjbqkjZvvcyNdv&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/purushukla/Public/tree/master/SlidingNavigationBar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span id=&quot;goog_582573901&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_582573902&quot;&gt;&lt;/span&gt;Download Sample Project: SlidingNavigationBar&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/2353777211176207659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://purushukla.blogspot.com/2013/02/new-slide-out-animation-for-ios-contd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/2353777211176207659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/2353777211176207659'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/2013/02/new-slide-out-animation-for-ios-contd.html' title='New Slide Out Animation for iOS (contd.)'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Iy_ViiBg_U9zbEFJcoZU5n4a2oxUreA9VSFfCH1BfRlYtp7ZrysugnDfU05I0mp0N1aN_nwapt0k05TwRngrHWFsPmMgNWkK4XgY_jFzIPFIDsWpHXwpmXkNH6PnNe7lxTuPFsHwEqc/s72-c/Screen+Shot+2013-02-12+at+9.18.53+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-55286706766643200.post-6078120821712367261</id><published>2013-02-10T16:23:00.003-08:00</published><updated>2013-02-14T15:38:29.670-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Slide out animation"/><title type='text'>New Slide Out Animation for iOS</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
In many recent applications on app store I have seen a new type of UIView animation. Applications like Facebook are using a new concept of&amp;nbsp;&lt;i&gt;slide in/out &lt;/i&gt;animation. This slide out animation concept can give your application a rich UI. So I thought why not create a sample application to try it out. At the end of the blog I will attach the sample project.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s get straight on this...&lt;br /&gt;
&lt;br /&gt;
Following video shows the sample project that I wrote for this. You can see that I am using a &lt;i&gt;map view &lt;/i&gt;as the main view and a &lt;i&gt;table view &lt;/i&gt;as the slide in/out view.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dxbvMisfjNkwRLPoQLKSRiyfFbiDBfij7vw22dk8yOlGjVWAfqhP-mFc0YnLLiPaaXRgKiSAc9-USf6KVZs&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
The Main View controller&lt;/h4&gt;
&lt;div&gt;
In the sample I have created a Main View Controller which is subclassed from UIViewController. This &amp;nbsp;class is the &lt;i&gt;root view controller &lt;/i&gt;for the main navigation controller.&amp;nbsp;It manages our two views: 1. MapView 2. TableView. Following image shows the &lt;i&gt;interface builder &lt;/i&gt;layout.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s400/Untitled+drawing.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Let&#39;s Slide In/Out the Table View&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
The method to perform the actual slide &lt;i&gt;in/out &lt;/i&gt;animation looks something like this:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBhK4zuYkchYhqBKY8NGMFaQ9AyW-pP0W_OILAQG-SEnJtvnEWNM9m1PwBOX9lr0iPbSRH5pGld-7bTegSftyf8cKD6-EzMNSYawv5jUK-xquiDDPRPMAM76IL1Bx7LRHrboQzJwbNXFs/s1600/Screen+Shot+2013-02-10+at+6.37.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBhK4zuYkchYhqBKY8NGMFaQ9AyW-pP0W_OILAQG-SEnJtvnEWNM9m1PwBOX9lr0iPbSRH5pGld-7bTegSftyf8cKD6-EzMNSYawv5jUK-xquiDDPRPMAM76IL1Bx7LRHrboQzJwbNXFs/s640/Screen+Shot+2013-02-10+at+6.37.30+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
It was that&amp;nbsp;simple...really?&amp;nbsp;What is it doing?&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
So the method uses UIView animation method: &lt;i&gt;animateWithDuration.&amp;nbsp;&lt;/i&gt;&amp;nbsp;It gets the &lt;i&gt;table view&#39;s frame &lt;/i&gt;and sets the origin of the &lt;i&gt;map view &lt;/i&gt;to the width of the &lt;i&gt;table view. &lt;/i&gt;The animation is done over a&amp;nbsp;period&amp;nbsp;of 0.25 seconds. You can&amp;nbsp;obviously&amp;nbsp;choose what ever value that best fits your need. When you select the same menu button again method also resets (slides out the table view) the entire view. That&#39;s the reason why it checks weather the &lt;i&gt;table view &lt;/i&gt;is already hidden or not. If &lt;i&gt;table view &lt;/i&gt;is hidden it &lt;i&gt;slides it in &lt;/i&gt;otherwise it &lt;i&gt;slides it out.&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;a href=&quot;http://www.purushukla.com/2013/02/new-slide-out-animation-for-ios-contd.html&quot;&gt;Continue reading here...&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/purushukla/Public&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Goto Sample Project: SlidingUiView&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s1600/Untitled+drawing.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/6078120821712367261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://purushukla.blogspot.com/2013/02/new-slide-out-animation-for-ios.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/6078120821712367261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/6078120821712367261'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/2013/02/new-slide-out-animation-for-ios.html' title='New Slide Out Animation for iOS'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPAtCel0pa1hyjz_PgFLq2ZFzcqAkG4X4PYdY9bL6dlkpAv7Xr3rT4xRgHdXpBuZTS7dN7gKFikjzhmG7z0_9IVJB5wxJWOOkBSC2pLbzGngeAJMtmc2FdeFUN2k8VoPPJHrvWZaOPJ4/s72-c/Untitled+drawing.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-55286706766643200.post-6358644170935820907</id><published>2011-10-02T05:21:00.000-07:00</published><updated>2013-02-22T19:56:11.701-08:00</updated><title type='text'>Application has active assertions beyond permitted time</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
If your application runs long running background task, then probably you would have seen several of these crash reports in your organizer&#39;s device logs.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&quot;Application Specific Information:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;lt;application_name&amp;gt; has active assertions beyond permitted time:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;{(&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;SBProcessAssertion: 0x1fa7cef0&amp;gt; identifier: UIKitBackgroundCompletionTask process: OpenMobile[1087] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1087 preventSuspend &amp;nbsp;preventIdleSleep ,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;SBProcessAssertion: 0x1ed0ad70&amp;gt; identifier: UIKitBackgroundCompletionTask process: OpenMobile[1087] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1087 preventSuspend &amp;nbsp;preventIdleSleep ,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;SBProcessAssertion: 0x1fa96c80&amp;gt; identifier: UIKitBackgroundCompletionTask process: OpenMobile[1087] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1087 preventSuspend &amp;nbsp;preventIdleSleep ,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;)}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
What this tell is that your application is running (or has not marked a task as &#39;end&#39;) a background task beyond the permitted time. In order to understand this we should dive into the concept of long running background tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Executing code in background on iOS&lt;/h2&gt;
&lt;div&gt;
There are several ways to execute your code in background on iOS. If your applications supports one of the following background modes then it automatically gets a chance to run in background. Conditions applied...depending on the type of background mode your application can be woken up at regular intervals (voip mode), it can run until some&amp;nbsp;interruption&amp;nbsp;(audio mode) etc.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;audio&lt;/li&gt;
&lt;li&gt;location&lt;/li&gt;
&lt;li&gt;voip&lt;/li&gt;
&lt;li&gt;newsstand-content&lt;/li&gt;
&lt;li&gt;external-accessory&lt;/li&gt;
&lt;li&gt;bluetooth-central&lt;/li&gt;
&lt;li&gt;bluetooth-peripheral&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
But what if your application does not fall in any of these category...don&#39;t you get a chance to run your code in background? Well...you do, but only for a certain amount of time. Apple decided that to be 10 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Executing a long running background task&lt;/h2&gt;
&lt;div&gt;
So if your application does not fall in any of the categories mentioned above, you have to implement a long running task in order to run your code when your application transitions to background. You implement a long running task by calling this method:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;code&quot;&gt;
[UIApplication sharedApplication] beingBackgroundTaskWithExpirationHandler:]&lt;/div&gt;
&lt;br /&gt;
What this method does is that it tells iOS that iOS must not suspend your application immediately when it transitions to background rather give time and let your&amp;nbsp;application&amp;nbsp;finish the critical task application was running when it was in foreground. iOS gives your application only 10 minutes though to finish your task and mark that as finished when done using the following method:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
[UIApplication sharedApplication] endBackgroundTask:]&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
This method marks the end of any long running background task. After 10 minutes iOS calls the expiration handler passed in the first method in order to give you&amp;nbsp;chance&amp;nbsp;to mark the end of the background task in case you have not already done so. This is how the general implmentation would look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
UIApplication&lt;span class=&quot;s1&quot;&gt;* application = [&lt;/span&gt;UIApplication&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;sharedApplication&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;p2&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
UIBackgroundTaskIdentifier&lt;span class=&quot;s1&quot;&gt; bgTaskId = &lt;/span&gt;UIBackgroundTaskInvalid&lt;span class=&quot;s1&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;if&lt;/span&gt;([application &lt;span class=&quot;s2&quot;&gt;respondsToSelector&lt;/span&gt;:&lt;span class=&quot;s3&quot;&gt;@selector&lt;/span&gt;(beginBackgroundTaskWithExpirationHandler:)]){&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; bgTaskId = [application &lt;/span&gt;beginBackgroundTaskWithExpirationHandler&lt;span class=&quot;s1&quot;&gt;:^{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [application &lt;span class=&quot;s1&quot;&gt;endBackgroundTask&lt;/span&gt;:bgTaskId];&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; }];&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see that the expiration handler marks the end of the background task. Once the expiration handler is called and after it exits, if there are any background task id which were created by your application and not have been marked as end, iOS TERMINATES your application and generates a crash report. The excerpt of such crash report is what is shown at the&amp;nbsp;beginning&amp;nbsp;of this post.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Solution&lt;/h2&gt;
&lt;div&gt;
In order to solve this issue I have written a &lt;i&gt;BackgroundTaskManager &lt;/i&gt;class - a simple class to manage background tasks. It exposes only one method:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;-(&lt;/span&gt;UIBackgroundTaskIdentifier&lt;span class=&quot;s1&quot;&gt;)beginNewBackgroundTask&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
How this works&lt;/h2&gt;
&lt;div&gt;
The class maintains a list of all the background tasks created using the above method. When the expiration handler is called it goes through all the tasks one by one and marks each of them as finished by calling the above &lt;i&gt;UIApplication&#39;s endBackgroundTask&lt;/i&gt; method.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://github.com/purushukla/Public/tree/master/BackgroundtaskManager&quot; target=&quot;_blank&quot;&gt;Download the code from here&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/6358644170935820907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/6358644170935820907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/6358644170935820907'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html' title='Application has active assertions beyond permitted time'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-55286706766643200.post-3452475127204985111</id><published>2011-07-10T14:34:00.000-07:00</published><updated>2013-02-14T10:24:02.053-08:00</updated><title type='text'>Google+ = Mature Facebook</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Google+, a free service that has smart and thoughtful solutions to some irksome limits entrenched in other social-media sites, mainly related to privacy settings and how to share links and posts with groups.&lt;br /&gt;
&lt;br style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; /&gt;
Google+ seems aimed at people who are more interested in sharing things with people or groups with similar interests rather than simply amassing the biggest number of online &quot;friends.&quot; Its seamless integration with other Google services you may use, from search to online documents, makes it easier to share things online.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
Privacy settings- deciding whom you share different posts with - seems to be top of mind on Google+. That&#39;s a relief after Google&#39;s earlier debacle with Google Buzz, which had arrived unsolicited and initially created circles of friends automatically based on whom&amp;nbsp;they&#39;ve corresponded with on Gmail. That meant your boss could see lists of people you&#39;ve been corresponding with for a new job.&lt;br /&gt;
&lt;br style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; /&gt;
With Google+, no one gets added automatically. Once you sign up, you add people - similar to how you follow people on Twitter.&amp;nbsp;Then, rather than throwing everyone into the same bucket, you choose a circle to put them in.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
Four standard&amp;nbsp;circles: &quot;friends,&quot; &quot;family,&quot; &quot;acquaintances&quot; and &quot;following.&quot; You can follow anyone without being accepted, whereas Facebook requires the consent of both sides.&amp;nbsp;You can create new circles.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
However, the privacy settings aren&#39;t perfect. Although you can choose to share a post with a limited number of people, the recipients can re-share the post further. It takes some digging to figure out that you can disable re-sharing by clicking on an icon to the right of a post. Google+ is in very early testing, so these types of settings could still change.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
Unlike Facebook, Google+ also lets you edit posts after you post them and decide for each post whether to allow comments, a feature I liked.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
Two other features, the ability to group video chat via webcam, called a &quot;Hangout,&quot; and the ability to chat with a group, called a &quot;Huddle,&quot; have proven to have so much appeal that Facebook quickly followed suit. The company said Wednesday that it will also roll out group chatting and video chatting by teaming with Internet phone company Skype. It will be interesting to see if Facebook ends up adding other Google+ features.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
For example, you can&#39;t search ... yet. And there are no addictive third-party apps such as &quot;FarmVille,&quot; which people have sunk countless hours playing on Facebook.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
all in all...Google+ = Mature Facebook.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
Do we need one? time will tell...&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/3452475127204985111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://purushukla.blogspot.com/2011/07/google-mature-facebook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/3452475127204985111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/3452475127204985111'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/2011/07/google-mature-facebook.html' title='Google+ = Mature Facebook'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-55286706766643200.post-1413633280727293953</id><published>2011-07-08T15:24:00.000-07:00</published><updated>2013-02-14T10:24:34.068-08:00</updated><title type='text'>Application executable is missing a required architecture (armv6)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you have recently migrated to XCode 4 from the previous version, after building and testing your application, you might face an issue during the upload through iTunesConnect. While uploading the the application the application loader reports an error &quot;Application executable is missing a required architecture (armv6)&quot;.&lt;br /&gt;
&lt;br /&gt;
There are several blogs talking about this problem and the solution they present are:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
1. Make sure that your build architectures include both &quot;armv6&quot; and &quot;armv7&quot;.&lt;br /&gt;
2. Make sure that the build setting &quot;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&lt;strong style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;Build active architect Only&quot; &lt;/strong&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;is set to &lt;b&gt;&quot;NO&quot; &lt;/b&gt;or &lt;b&gt;unchecked.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;3. In the worst case you have to create a separate project and import all your source files, resource etc. This solution is not as easy as it sounds.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;You have made sure that the build setting&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&quot;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&lt;strong style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;Build active architect Only&quot;&amp;nbsp;&lt;/strong&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;is set to&amp;nbsp;&lt;b&gt;&quot;NO&quot;. &lt;/b&gt;But you noticed that your &quot;A&lt;b&gt;rchitectures&quot; &lt;/b&gt;section is only showing &lt;b&gt;&quot;armv7&quot; &lt;/b&gt;as the supported architecture. Now you want to add &lt;b&gt;&quot;armv6&quot; &lt;/b&gt;there but you don&#39;t see any option in the drop down.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;Here&#39;s the work around for the problem:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;In the drop down list in the architectures section select &lt;b&gt;&quot;Others&quot; &lt;/b&gt;and then click on the &lt;b&gt;&quot;+&quot; &lt;/b&gt;&amp;nbsp;button and type in &quot;&lt;b&gt;armv6&quot; &lt;/b&gt;manually and you are good to go.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 14px; line-height: 18px;&quot;&gt;Build, test and upload your application.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://purushukla.blogspot.com/feeds/1413633280727293953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://purushukla.blogspot.com/2011/07/application-executable-is-missing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/1413633280727293953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/55286706766643200/posts/default/1413633280727293953'/><link rel='alternate' type='text/html' href='http://purushukla.blogspot.com/2011/07/application-executable-is-missing.html' title='Application executable is missing a required architecture (armv6)'/><author><name>Puru&#39;s Blog</name><uri>http://www.blogger.com/profile/10187451353297661817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdWFuDP7ThiOOj99InzeonCL0IEdi9lyX8BX3tCiZ7O33L1mLEnamvM_UvTmKHVt_b_2wCK3oWsvOm42ib-Hv83euXj3FQ0XFRdAZt5VoxQMeMXDKWJ0QeO0siZtCkGVw/s220/269748_245912872091111_100000172010123_1181493_2525523_n.jpg'/></author><thr:total>0</thr:total></entry></feed>