Разве невозможно перевернуть подпредставления viewControllers.view с «transitionWithView», используя блок - PullRequest
2 голосов
/ 13 января 2011

Я просто не могу заставить это работать, я думаю, это было просто, но не повезло.

- (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 Фотографии , в котором изображение будет переворачиваться и масштабироваться до полного экрана.

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

1 Ответ

0 голосов
/ 24 января 2011

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

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

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

                }];

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

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

...