Driss Zouak
Driss Zouak

Reputation: 2401

How can I animate a View to fly in from the bottom of the screen?

I'm trying to figure out how to have a view. Let's call it ThirdView. It should slide up from the bottom of the screen when a user clicks a particular button on SecondView.

Upvotes: 1

Views: 1763

Answers (2)

GotRakija
GotRakija

Reputation: 69

Here is a complete working example. It is a tad simpler than in chrisntr's answer...though the above example is what I used to figure everything out.

The coolest thing about this method is that for an artistic custom UI (like the one I am building for a game), there is no off-the-shelf UI elements like the TabBar, Navigation bars, etc. The most creative applications don't use standard UI stuff.

In your main.cs file, in your finishedlaunching block:

ViewController myUIV = new ViewController();
window.AddSubview(myUIV.View);
window.MakeKeyAndVisble();

And then in a new code file add this code:

using System;
using System.Drawing;
using MonoTouch.UIKit;

namespace AnimationTest
{

    public class ViewController : UIViewController
    {
        UIButton uib = new UIButton(new RectangleF(100, 100, 40, 40));
        public override void ViewDidLoad()
        {
            Console.WriteLine("UI1");
            this.View.BackgroundColor = UIColor.Blue;
            uib.BackgroundColor = UIColor.White;
            uib.TouchUpInside += delegate {
                Console.WriteLine("Hey!");
                var vc2 = new SecondController();
                PresentModalViewController(vc2, true);
            };
            this.View.AddSubview(uib);
            base.ViewDidLoad();
        }
    }

    public class SecondController : UIViewController
    {
        UIButton uib = new UIButton(new RectangleF(100, 100, 40, 40));
        public override void ViewDidLoad()
        {
            this.View.BackgroundColor = UIColor.White;
            uib.BackgroundColor = UIColor.Red;
            uib.TouchUpInside += delegate {
                this.DismissModalViewControllerAnimated(true);
            };

            this.View.AddSubview(uib);
            base.ViewDidLoad();
        }
    }

Upvotes: 2

chrisntr
chrisntr

Reputation: 2208

You'll want to create the ThirdView in your SecondView and present it as a modal view, passing in the secondView in the constructor. This will be the easiest way of animating it in the way you would like.

var thirdView = new ThirdView(secondView);
this.PresentModalViewController(thirdView, true);

In your third view, you'll want to call the passed-in SecondView and call:

secondView.DismissModalViewControllerAnimated(true);

Upvotes: 4

Related Questions