Я хочу создать пользовательскую анимацию в iOS. Предположим, у меня есть отображение UIView с его SubViews.I хочу сделать снимок экрана и разбить его на четыре части, которые должны быть левым, правым, нижним, прямым и средним и перемещать каждую часть в их углы. Поскольку левый верх должен перемещаться в левый верхний угол UIView и правый верх должны перемещаться в правый верхний угол и так далее.Создавать пользовательские анимации в Objective-C?
0
A
ответ
0
Может быть, это один помогает вам, но не уверен, первый набор ваши позиции кадров после этого изменить положение кадров, что вы хотите, по умолчанию я везу
top.frame=CGRectMake(0,0,320,120);
bottom.frame=CGRectMake(0,315,320,145);
left.frame=CGRectMake(0,113,151,202);
right.frame=CGRectMake(175,113,151,202);
[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(tranform) userInfo:nil repeats:NO];
через 3 секунды этот метод позвонят,
-(void)tranform{
[UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationTransitionCurlUp
animations:^{
top.frame=CGRectMake(0,-120,320,120);
bottom.frame=CGRectMake(0,480,320,145);
left.frame=CGRectMake(-151,113,151,202);
right.frame=CGRectMake(320,113,151,202);
}
completion:nil];
}
в выше коде сверху, снизу, слева, справа, является четыре вида и я добавляю все те self.view и когда щелчок на конкретном, но анимация происходит относительно т наследуйте соответствующие рамки.
0
Вот мой ответ, это будет скриншот текущего отображения экрана, который делит его на четыре равные части от центра и оживит его, чтобы перейти к соответствующим углам.
- (IBAction)animate:(id)sender
{
NSLog(@"animation called ");
UIGraphicsBeginImageContext(self.view.window.bounds.size);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imgref=[image CGImage];
NSArray *arrayOfImages= [[NSArray alloc]initWithArray:[self splitImageIntoRects:imgref]];
NSLog(@"array of images are %@",arrayOfImages);
for (CALayer *layer in arrayOfImages) {
[self.view.layer addSublayer:layer];
}
[self animateLayers:arrayOfImages];
}
-(void)animateLayers:(NSArray*)array
{
for (int i=0;i<array.count;i++)
{
CALayer *layer=[array objectAtIndex:i];
CGRect rect=[layer frame];
CGPoint newPt;
switch (i) {
case 0:
newPt=CGPointMake(-rect.size.width, -rect.size.height);
break;
case 1:
newPt=CGPointMake(rect.origin.x-rect.size.width, rect.origin.y+rect.size.height);
break;
case 2:
newPt=CGPointMake(rect.origin.x+rect.size.width, rect.origin.y-rect.size.height);
break;
case 3:
newPt=CGPointMake(rect.origin.x+rect.size.width, rect.origin.y+rect.size.height);
break;
}
[self moveLayer:layer to:newPt];
}
}
-(void)moveLayer:(CALayer*)layer to:(CGPoint)point
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.duration=1;
animation.fromValue = [layer valueForKey:@"position"];
animation.toValue = [NSValue valueWithCGPoint:point];
layer.position = point;
[layer addAnimation:animation forKey:@"position"];
}
- (NSArray*)splitImageIntoRects:(CGImageRef)anImage{
CGSize imageSize = CGSizeMake(CGImageGetWidth(anImage), CGImageGetHeight(anImage));
NSMutableArray *splitLayers = [NSMutableArray array];
int kXSlices = 2;
int kYSlices = 2;
for(int x = 0;x < kXSlices;x++) {
for(int y = 0;y < kYSlices;y++) {
CGRect frame = CGRectMake((imageSize.width/kXSlices) * x,
(imageSize.height/kYSlices) * y,
(imageSize.width/kXSlices),
(imageSize.height/kYSlices));
CALayer *layer = [CALayer layer];
layer.frame = frame;
CGImageRef subimage = CGImageCreateWithImageInRect(anImage, frame);
layer.contents = (__bridge id)subimage;
CFRelease(subimage);
[splitLayers addObject:layer];
}
}
return splitLayers;
}
Смежные вопросы
- 1. Как создавать пользовательские интерполятор применять перевод анимации в Android
- 2. Пользовательские анимации в Android
- 3. Пользовательские анимации в Compass?
- 4. Пользовательские Анимации в UIImageView
- 5. Учимся создавать анимации в C++
- 6. Создавать пользовательские «настройки сборки»
- 7. Зачем создавать пользовательские исключения?
- 8. создавать пользовательские андроид вкладки
- 9. Полимерные пользовательские анимации
- 10. Вложенные пользовательские анимации UIScrollViews
- 11. Пользовательские анимации для Android
- 12. Пользовательские анимации полуботинки
- 13. Пользовательские анимации с UIViewController
- 14. insertRowsAtIndexPaths пользовательские анимации Swift
- 15. Android set Пользовательские анимации
- 16. magento2 создавать пользовательские переменные программно
- 17. ApplicationException или создавать пользовательские исключения?
- 18. Spotify app, создавать пользовательские модули
- 19. Джанго summernote создавать пользовательские кнопки
- 20. Scala - создавать пользовательские типы covariant
- 21. Как создавать пользовательские WordPress галереи
- 22. SBT как создавать пользовательские команды
- 23. ObjectiveC - Как удалить же предыдущий UIView, прежде чем создавать новые
- 24. как создавать пользовательские предупреждения diaogue
- 25. как создавать пользовательские модальное наложения
- 26. PhpStorm, создавать пользовательские UML диаграмм
- 27. Тестирование загрузки класса в ObjectiveC
- 28. Пользовательские JQuery/JS слайдер анимации
- 29. Пользовательские анимации UIViewController БЕЗ UINAVIGATIONCONTROLLER
- 30. Как добавить пользовательские анимации viewpager
любым способом спасибо, теперь я решил его – 2013-03-02 08:56:41
я знаю, как для анимации, но я думаю, что вы не читали мой вопрос внимательно, что я want.I решил его, через 6 часов я буду загружать его – 2013-03-02 09:03:59
здесь я «Принимая четыре изображения, которые делят одно полное изображение на четыре части, когда я нажимаю одну конкретную кнопку, эти четыре части перемещаются из центра в верхнюю, левую, правую и нижнюю с их соответствующими положениями. – Balu