Плавно переключаться с одного модального вида на другой, не показывая сплошной цвет фона - PullRequest
4 голосов
/ 26 января 2012

У меня есть следующий пользовательский интерфейс для приложения для iPad:

диалог модального просмотра http://i42.tinypic.com/2sbr90j.gif

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

У меня это работает нормально.Но есть цвет фона, отображаемый, когда dailog переворачивается.Как вы можете видеть:

здесь http://i41.tinypic.com/2gt3u4l.gif

Есть ли способ, чтобы этот блок цвета не отображался при переворачивании диалогов?Мне бы хотелось, чтобы это выглядело более плавно - как будто лист бумаги переворачивается.

Виды в основном такие:

Окно

Главный вид.Установите для окна rootViewController

Модальный режим входа в систему

Таким образом, основное окно и корневой контроллер настраиваются следующим образом (в классе делегата приложения):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

Окно входа в систему настроено и отображается в главном представлении viewDidAppear :

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // Setup and show Login dialog
    LoginViewController* controller = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil];
    controller.delegate = self;
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    controller.modalPresentationStyle = UIModalPresentationFormSheet;
   [self presentModalViewController:controller animated:YES];
}

И когда Нажата кнопка настроек : отображение модального вида Настройки выполняется почти так же, как было показано модальное представление Login :

- (IBAction)settingsButtonPressed:(id)sender {
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    controller.delegate = self;
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    controller.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentModalViewController:controller animated:YES];    
}

1 Ответ

3 голосов
/ 26 января 2012

Я не думаю, что есть какой-то способ сделать то, что вы хотите, используя modalPresentationStyle. Вы должны будете реализовать анимацию самостоятельно, используя анимацию перехода, используя следующий метод:

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion

С опцией UIViewAnimationOptionTransitionFlipFromLeft.

В этом случае новое представление, которое вы хотите перевернуть, - это не содержимое модального окна (controller.view), а сам модальный фрейм, поэтому поэкспериментируйте с простым вызовом метода выше из кнопки настроек и вместо передачи контроллера .view, подставьте controller.view.superview и, если это не сработает, попробуйте controller.view.superview.superview, пока анимация не будет выглядеть правильно.

Потребуется некоторая настройка, чтобы понять, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...