Как я могу представить UIView от нижней части экрана как UIActionSheet?

Я хотел бы, чтобы UIView скользил с нижней части экрана (и остался середина экрана) как UIActionSheet. Как я могу выполнить это?

ОБНОВЛЕНИЕ: Я использую следующий код:

TestView* test = [[TestView alloc] initWithNibName:@"TestView" bundle:nil];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

test.view.center = CGPointMake(160,100);
//test.view.frame = CGRectMake(0, 0, 160, 210);
[[[UIApplication sharedApplication] keyWindow] addSubview:test.view];

[UIView commitAnimations];  

Представление, кажется, анимирует от угла и появляется в углу. Как я могу заставить его скользить с нижней части? Нахождение рядом!

9
задан Sheehan Alam 29 July 2010 в 02:58
поделиться

3 ответа

Сделайте то, что здесь сделал Мэтт, но просто измените значения и направление. У меня дома есть код, чтобы сделать это снизу, если он вам понадобится позже (я обновлю этот пост).

Ссылка: http://cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

Также не забудьте вынуть фрагмент кода, который сдвигает основной вид сверху вниз (так что вместо этого UIView просто появляется поверх, как ActionSheet)

Обновлено с помощью кода:

Это то, что я использую в одном из моих приложений, чтобы показать / скрыть небольшое представление «параметров»:

- (void)toggleOptions:(BOOL)ViewHidden
{
// this method opens/closes the player options view (which sets repeat interval, repeat & delay on/off)

if (ViewHidden == NO)
{
    // delay and move view out of superview
    CGRect optionsFrame = optionsController.view.frame;

    [UIView beginAnimations:nil context:nil];

    optionsFrame.origin.y += optionsFrame.size.height;
    optionsController.view.frame = optionsFrame;

    [UIView commitAnimations];

    [optionsController.view
     performSelector:@selector(removeFromSuperview)
     withObject:nil
     afterDelay:0.5];
    [optionsController
     performSelector:@selector(release)
     withObject:nil
     afterDelay:0.5];
    optionsController = nil;
}
else
{
    optionsController = [[PlayOptionsViewController alloc] init];

    //
    // Position the options at bottom of screen
    //
    CGRect optionsFrame = optionsController.view.frame;
    optionsFrame.origin.x = 0;
    optionsFrame.size.width = 320;
    optionsFrame.origin.y = 423;

    //
    // For the animation, move the view up by its own height.
    //
    optionsFrame.origin.y += optionsFrame.size.height;

    optionsController.view.frame = optionsFrame;
    [window addSubview:optionsController.view];

    [UIView beginAnimations:nil context:nil];

    optionsFrame.origin.y -= optionsFrame.size.height;
    optionsController.view.frame = optionsFrame;

    [UIView commitAnimations];
}
}
4
ответ дан 4 December 2019 в 21:47
поделиться

Одним из способов было бы использовать текущий контроллер модального представления на контроллере представления:

presentModalViewController: (UIViewController *) modalViewController анимированный: (BOOL) анимированный

Для получения дополнительной информации см. посмотрите документацию UIViewController .

РЕДАКТИРОВАТЬ : если вам нужен вид в середине экрана, вам нужно будет анимировать его в положение, как указано в @jtbandes. Я предлагаю также добавить немного конфет в блок анимации UIView:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

myView.center = CGPointMake(x,y);

[UIView commitAnimations];

Затем вы можете переместить его снова, если вам нужно перейти в полноэкранный режим или закрыть его.

4
ответ дан 4 December 2019 в 21:47
поделиться

Вам придется переместить представление самостоятельно, установив его center или frame. Я предоставлю вам самим разобраться, что для этого нужно сделать. Но для анимации:

// set the view to its initial position here...

[UIView beginAnimations:nil context:NULL];
// move the view into place here...
[UIView commitAnimations];
1
ответ дан 4 December 2019 в 21:47
поделиться