простые строки кода

я есть страница входа с именем «LoginViewController». У меня есть кнопка информации на этой странице. Если я нажму на него, я хочу показать некоторую информацию о моем приложении. Также я хочу представить эту информационную страницу, используя флип-анимацию.

Код для создания кнопки информации,

infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
infoButton.frame = CGRectMake(285, 425, 30, 30);
infoButton.backgroundColor = [UIColor clearColor];

[infoButton addTarget:self 
            action:@selector(displayInfoView) 
            forControlEvents:UIControlEventTouchUpInside];

Если я нажму на кнопку информации,displayInfoView метод будет вызван. Там я могу показатьUIView отображать некоторую информацию. Я прав?

Для флип-анимации я использовал этот код ...

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:.8];

[UIView setAnimationTransition:([loginPageView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight) 
        forView:mainView
        cache:YES]; 

if ([infoView superview]) {
    [infoView removeFromSuperview];
    [mainView addSubview:loginPageView];
}
else {
    [loginPageView removeFromSuperview];
    [mainView addSubview:infoView];
}

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView commitAnimations];

ВотloginPageView это вид входа в систему, который содержит кнопку информации.infoView это представление, которое содержит информацию о приложении.mainView это общее представление, которое содержит настоящее представление.

Теперь моя проблема вместо того, чтобы показатьUIViewможно показать другой класс контроллера представления при нажатии кнопки информации? Помните, что сальто отлично работает сUIView, Но когда я пытаюсь сUIViewControllerЭто создает проблемы.

Может кто-нибудь предложить мне, как показать UIViewController (в моем приложении мне нужно показатьAboutViewController) во время нажатия кнопки информации с эффектом переворота?

Ответы на вопрос(4)

viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:viewCon,troller animated:YES completion:nil];

Чтобы выйти из него:

[self dismissViewControllerAnimated:YES completion:nil];
 Elliot Yap25 февр. 2014 г., 14:42
Я думал, что мне нужен контроллер навигации, пока я не прочитал твой ответ.

в Cocoa Touch, а именно:Контроллеры представления а такжеПросмотры сопоставимы и похожи. Правда в том, что это не так.

Возвращаясь к вашему конкретному вопросу, да, анимации основаны на представлениях, а не на контроллерах представлений. Но каждое представление должно контролироваться одним из ваших контроллеров представления. И это то, что вид, принадлежащий контролеру, полностью зависит от вас. В вашем случае анимация может происходить между двумя представлениями с двумя разными контроллерами или между двумя представлениями одного и того же контроллера.

Что касается примеров кода, я предлагаю вам взглянуть на один из стандартных шаблонов Xcode,Сервисное приложение, которая реализовала эту анимацию «щелкни и щелкни» кратким и стандартизированным способом.

 Di Wu07 янв. 2011 г., 07:57
Можете ли вы изменить свой формат кода, чтобы я мог взглянуть на него? Теперь формат настолько грязный, что я даже не знаю, с чего начать.
 Rajkanth07 янв. 2011 г., 07:54
Работает отлично с viewcontroller и view. Но не работал с двумя viewcontrollers
 Rajkanth07 янв. 2011 г., 07:53
Спасибо за ваш ответ ... Я пытаюсь сделать анимацию между двумя контроллерами представления. Не просмотров

 AboutShowViewController *aboutShowViewController = [[AboutShowViewController alloc] initWithNibName:@"AboutShowViewController" bundle:[NSBundle mainBundle]];

    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:0.80];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
                           forView:self.navigationController.view cache:NO];

    [self.navigationController pushViewController:aboutShowViewController animated:YES];
    [UIView commitAnimations];

    [aboutShowViewController release];

Кредит идет в файсарВот.

 cheeesus01 окт. 2012 г., 18:36
Потому что версия Майкла работает без переворачиванияUITabBar, Кто спрашивал про модальные контроллеры вида?
 Filip Radelic12 сент. 2011 г., 10:08
Контроллер навигации имеет довольно четкое назначение, как и контроллеры модального представления. Зачем использовать один для достижения цели другого?
  override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(true)
      // for back button
      changeTransition()
  }
        //btnMap.addTarget(self, action: #selector(searchHotelsResultVC.goToMap), for: .touchUpInside)
       //btnMap.addTarget(self, action: #selector(MapViewController.backToList), for: .touchUpInside)
func goToMap()  {
      // for pushing
     changeTransition()
navigationController?.pushViewController(settingsVC, animated: false)
}
func backToList()  {
        // for dismiss 
        changeTransition()
        navigationController?.popViewController(animated: false)
        dismiss(animated: true, completion: nil)

    }
    func changeTransition()  {
        let transition = CATransition()
        transition.duration = 0.5
        transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        //transition.type = kCATransitionPush
        transition.type = "flip"
        transition.subtype = kCATransitionFromLeft
        navigationController?.view.layer.add(transition, forKey: kCATransition)

    }

Ваш ответ на вопрос