iPhone - возможно ли создать анимацию, отображающую изображение из центра наружу? - PullRequest
6 голосов
/ 28 мая 2011

Я видел немало обучающих программ о том, как плавно выводить изображения на iPhone, просто изменяя их альфа-значения (например, здесь ).

Это нормально, но я пытаюсь достичь чего-то немного другого; вместо того, чтобы изображение целиком исчезало, я бы анимировал изображение, чтобы со временем оно отображалось от центра изображения к краю (и наоборот).

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

Я не могу найти ничего подобного, кто-нибудь знает, возможно ли это на iPhone? Любые идеи / ссылки, которые могут быть полезны?

Ответы [ 3 ]

4 голосов
/ 28 мая 2011

Этого должно быть достаточно просто: создайте UIImageView, удерживающий объект, установите для contentMode значение UIViewContentModeCenter, затем используйте блок CoreAnimation для анимации изменения кадра с нулевой ширины / высоты и центрирования до полной области хочу покрыть.

* 1003 Е.Г. *

/* coming into here, imageView is a suitable UIImageView,
   frameToFill is a CGRect describing the area the image
   view should cover when fully unfurled */

// set up image view: content mode is centre so that the current
// frame doesn't affect image sizing, and we'll be keeping the same
// centre throughout so it won't move. The initial frame is on the
// centre and of zero size. The view contents are clipped to the view's
// bounds so that the changing frame does actually cut off the image
imageView.contentMode = UIViewContentModeCenter;
imageView.frame = CGRectMake(frameToFill.origin.x + frameToFill.size.width*0.5f,
                             frameToFill.origin.y + frameToFill.size.height*0.5f,
                             0.0f, 0.0f);
imageView.clipsToBounds = YES;

// set up an animation block, lasting 3 seconds, in which the
// only thing animated is the view's frame, expanding back out
// to the original
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0f];
    imageView.frame = frameToFill;
[UIView commitAnimations];

Край вашего обзора будет твердым и прямоугольным. Если вы хотите что-то более тонкое, вы, вероятно, не сможете достичь этого с помощью CoreAnimation; понижение до уровня CoreGraphics, вероятно, является порядком дня.

2 голосов
/ 28 мая 2011

Простая (и, возможно, не самая лучшая) вещь, которую можно попробовать (без гарантий, что она работает), - создать imageView и закруглить углы, пока он не станет круглым, что-то вроде этого:

    [imageView.layer setCornerRadius:60.0f];
    [imageView.layer setMasksToBounds:YES];
    [imageView.layer setBorderWidth:0.0f];

Установить начальнуюimageView маленький (1 на 1 пиксель).Затем используйте простой код анимации:

[UIView beginAnimations:nil context:NULL]; {
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDelay:2.0];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDelegate:self];
    // set the imageView to the size you want here
} [UIView commitAnimations];
0 голосов
/ 28 мая 2011

Попробуйте этот код.

Создание imageView.

UIImageView *imgv = [[UIImageView alloc]initWithFrame:
                                          CGRectMake(0, 0, 0, 0)];
imgv.image = [UIImage imageNamed:@"black.png"];

//position the imageview to the center of the screen.
 imgv.center = self.view.center;
    [self.view addSubview:imgv];
    [imgv release];

//now give the imageview a new frame of full size with an animation 

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

//i am assuming that your full frame is 320x480
    imgv.frame = CGRectMake(0, 0, 320, 480);

[UIView commitAnimations];

Теперь изображение будет масштабироваться от центра экрана, чтобы заполнить его.

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