 <p>To rotate a view in 3D, you need to modify the <code>transform</code> property of the view's layer.</p> <p>It sounds like you want to rotate the view around the X axis. And I guess you want perspective, where the edge closer to the viewer appears larger and the edge farther from the viewer appears smaller.</p> <p>We'll write a helper function that makes the transform. We start with the identity transform:</p> <pre><code>static CATransform3D transformWithAngle(CGFloat angle) { CATransform3D transform = CATransform3DIdentity; </code></pre> <p>Then set the <code>m34</code> component of the transform based on the distance from the viewer to the view:</p> <pre><code> transform.m34 = -1.0f / 300.0f; </code></pre> <p>If you use a number larger than <code>300</code>, the perspective will be weaker. If you use a number smaller than <code>300</code>, the perspective will be stronger.</p> <p>Next, add the rotation:</p> <pre><code> transform = CATransform3DRotate(transform, angle, 1, 0, 0); </code></pre> <p>Then return the transform:</p> <pre><code> return transform; } </code></pre> <p>Let's say you want to apply this to a view named <code>self.riseView</code>. You probably want the rotation to be around the bottom edge of the view, so set the layer's anchor point to the bottom edge:</p> <pre><code>- (void)viewDidLoad { CGRect frame = self.riseView.frame; self.riseView.layer.anchorPoint = CGPointMake(0.5f, 1.0f); self.riseView.frame = frame; </code></pre> <p>and initialize the layer's transform with an angle of 0:</p> <pre><code> self.riseView.layer.transform = transformWithAngle(0); } </code></pre> <p>You can make the view “set” (rotate down to the ground plane) by rotating it to an angle of <code>-M_PI_2</code>:</p> <pre><code>- (IBAction)setButtonWasTapped:(id)sender { [self animateRiseViewToAngle:-M_PI_2]; } </code></pre> <p>and you can make it “rise” (rotate up) by rotating it to an angle of zero:</p> <pre><code>- (IBAction)riseButtonWasTapped:(id)sender { [self animateRiseViewToAngle:0]; } </code></pre> <p>Here's how we actually do the animation:</p> <pre><code>- (void)animateRiseViewToAngle:(CGFloat)angle { [UIView animateWithDuration:2 animations:^{ self.riseView.layer.transform = transformWithAngle(angle); }]; } </code></pre>