Анимация iphone UIview изменяет размер, как исчезает в воде и возвращается плавающим - PullRequest
0 голосов
/ 18 ноября 2011

Я не хочу появляться и исчезать, как наиболее распространенное решение для анимации uiview. Я хотел бы, чтобы размер uiview уменьшился до небольшого, пока он не исчезнет и не вернется таким же образом. Еще один способ сказать, что камера направлена ​​близко к столу со всеми объектами в нем (UIView), и камера выполняет резервное копирование, и чем больше резервных копий, тем меньше размер стола. Вот почему я назвал, что это в основном мое приложение, весь uiview погружается в воду и всплывает обратно. Надеюсь, я найду учебник или чье-то предложение для решения. все размеры / уменьшаются в середине / центре экрана.

UPDATE *** Я бы хотел, чтобы он уменьшался в случайном положении экрана и появлялся из случайного положения экрана. Также мое подпредставление из другого класса - viewdidload в mainView (View = [[View alloc] initWithFrame: CGRectMake (0, 40, 300, 300)];)

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Попробуйте, где view - представление, с которым вы связываетесь:

CGRect originalFrame = view.frame;

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
    CGRect frame = view.frame;
    frame.origin = view.center;
    frame.size = CGSizeMake( 0, 0 );
    view.frame = frame;
} completion:^(BOOL finished) {
    // Do something with the view

    [UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
        view.frame = originalFrame;
    } completion:^(BOOL finished) {
        return;
    }];

    return;
}];
0 голосов
/ 18 ноября 2011

Вы можете получить этот эффект, уменьшив рамку до размера (0,0) по центру некоторой точки на экране

// assume float cx,cy are defined as center coordinates of your animation (ie where your image shrinks and grows from)
// assume CGRect animFrame is defined as the starting coordinates of your animationView
// assume you have outlet to animationView

// to shrink
        [UIView beginAnimations:@"WaterAnim" context:nil];
        [UIView setAnimationDuration:0.33];

        animationView.frame = CGRectMake(cx,cy, 0,0);

        [UIView commitAnimations];
// to grow
        [UIView beginAnimations:@"WaterAnim" context:nil];
        [UIView setAnimationDuration:0.33];
        animationView.frame = animationFrame;
        [UIView commitAnimations];
...