2011-01-13 1 views
2

Я просто не могу заставить это работать, я думаю, это было просто, но не повезло.Невозможно перевернуть subviews viewControllers.view с помощью "transitionWithView", используя блок

- (void) animate { 

    UIView *viewA = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)]; 
    [viewA setBackgroundColor:[UIColor blueColor]]; 
    UIView *viewB = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)]; 
    [viewB setBackgroundColor:[UIColor brownColor]]; 

    UIView *container = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 100.0f)]; 
    [container addSubview:viewA]; 

    [self.view addSubview:container]; 

    [UIView transitionWithView:container 
         duration:0.4 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
        animations:^{ 
         [[[container subviews] objectAtIndex:0] removeFromSuperview]; 
         [container addSubview:viewB]; 
        } 
        completion:^(BOOL finished){ 

        }]; 


} 

Это как документация рекомендует вам сделать это, сделать контейнер, добавить/удалить два подвидов, которые вы хотите, чтобы переключаться между.

Я не могу заставить его работать. Он просто отобразит viewA, затем viewB, как будто часть анимации пропущена, но блок выполняется?

Если я переключаю контейнер в [UIView transitionWithView:container с self.view он переворачивается весь вид (Как и предполагалось), но я не могу заставить его сделать это с 2 подвидов из self.view.

Разве это не так?

Я ищу, чтобы сделать что-то вроде iPad Фотографии приложение, где изображение будет переворачиваться и масштабироваться до полного экрана.

Я действительно надеюсь, что кто-то может помочь мне здесь, спасибо заранее.

ответ

-3

Вы не можете поставить точки с запятой внутри блока. Если вы хотите сделать две вещи, разделите их на «,». Также CurveEase, вероятно, будет приятным., Если вы этого хотите.

Это должно сработать.

[UIView transitionWithView:container 
        duration:0.4 
        options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        [[[container subviews] objectAtIndex:0] removeFromSuperview], 
        [container addSubview:viewB]; 
       } 
       completion:^(BOOL finished){ 

       }]; 

Если нет, рассмотреть возможность сделать просмотр переменных экземпляра и убедитесь, что они выделяются, прежде чем пытаться оживить их. Если вы хотите анимировать нажатием кнопки, вы можете сделать это напрямую с отправителем, если весь вид - это UIButton.

Надеюсь, это поможет.

+0

Да, это так! точка с запятой. Это не было ясно из документов. Спасибо, Ники! – RickiG

+0

Добро пожаловать. В первый раз, когда я наткнулся на это, я довольно долго бился, прежде чем узнал о запятых. Рад, что я мог избавить вас от этой же муки. : D – Nicki

+1

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

 Смежные вопросы

  • Нет связанных вопросов^_^