Я хотел бы, чтобы 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];
Представление, кажется, анимирует от угла и появляется в углу. Как я могу заставить его скользить с нижней части? Нахождение рядом!
Сделайте то, что здесь сделал Мэтт, но просто измените значения и направление. У меня дома есть код, чтобы сделать это снизу, если он вам понадобится позже (я обновлю этот пост).
Ссылка: 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];
}
}
Одним из способов было бы использовать текущий контроллер модального представления на контроллере представления:
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];
Затем вы можете переместить его снова, если вам нужно перейти в полноэкранный режим или закрыть его.
Вам придется переместить представление самостоятельно, установив его center
или frame
. Я предоставлю вам самим разобраться, что для этого нужно сделать. Но для анимации:
// set the view to its initial position here...
[UIView beginAnimations:nil context:NULL];
// move the view into place here...
[UIView commitAnimations];