iOS Слайд UIView (Меню) со стороны в другой вид - PullRequest
0 голосов
/ 09 июля 2011

Я хочу, чтобы скользить в меню со стороны в представлении после события нажатия кнопки. После другого нажатия кнопки меню должно быть выдвинуто из большого окна ...

Я экспериментировал с CATransition, но не могу решить эту проблему ...

CATransition *animation = [CATransition animation];
[animation setDuration:1];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromBottom];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]] ;

[[menuView layer] addAnimation:animation forKey:@"@asdf"];        
[menuView setCenter:CGPointMake([menuView center].x, [menuView center].y + 450)];

это работает немного, но я не понимаю, почему ..: - /

Ответы [ 2 ]

0 голосов
/ 07 ноября 2012

Если вы хотите реализовать это самостоятельно, вы можете создать собственный вид и добавить событие нажатия кнопки для кнопки в вашем контроллере представления.

Также создайте логическую переменную, чтобы определить, является ли ваше пользовательское представление видимым или нет.

Если при щелчке мышью вид меню не виден, сделайте следующее:

-(void)viewDidLoad
{
    ...

    // ---------------------------------------------
    // create the custom menu view off screen
    // ---------------------------------------------
    menuView = [[MenuView alloc] initWithFrame:CGRectMake(-320, 0, 320, 480)];
    menuView.alpha = 0; // hide it so it doesn't show at the start, only show when slide in

    [self.view addSubview:menuView];

    ...
}

-(void)toggleMenu
{
    if(menuIsVisible)
    {
        menuIsVisible = NO;

        [self hideMenu];
    }
    else
    {
        menuIsVisible = YES;

        [self showMenu];
    }
}

-(void)hideMenu
{
    [UIView animateWithDuration:0.5 animations:^{
        // note CGAffineTransforms doesn't use coordinates, they use offset
        // so an offset of (0,0) would bring the menuView back to the coordinate
        // when it was first instantiated, in our case, (-320, 0).
        menuView.transform = CGAffineTransformMakeTranslation(0,0);
    } completion:^{
        // hide the menu
        menuView.alpha = 0;
    }];
}

-(void)showMenu
{
    // show the menu
    menuView.alpha = 1;

    [UIView animateWithDuration:0.5 animations:^{
        // note CGAffineTransforms doesn't use coordinates, they use offset
        // so an offset of (320,0) from coordinate (-320,0) would slide the
        // menuView out into view
        menuView.transform = CGAffineTransformMakeTranslation(320,0);
    }];
}
0 голосов
/ 07 ноября 2012

Контроллер типа ViewDeck позволит вам сделать это.

Редактировать : Я не уверен, что еще добавить к этому, модератор. Это открытый исходный код, который добавит меню, которым управляет кнопка, которая будет вставляться при нажатии и выдвигаться при повторном нажатии, аналогично тем, что есть у Facebook и Path. Вы также получаете сенсорные события со слайдом.

Вот пример того, как использовать его на странице github: https://github.com/Inferis/ViewDeck#how-to-use-it, а также несколько примеров проектов, доступных в исходном коде.

...