2012-06-23 2 views
0

для простого примера, у меня есть два uiviews, и в первом представлении есть только одна кнопка для воспроизведения видео во втором представлении. идея заключается в том, когда пользователь нажимает кнопку воспроизведения, второй вид будет отображаться и воспроизводить видео в заданном положении. вот то, что я сделал для него:видео анимированные странно при использовании анимации uiview

в заголовочном файле:

MPMoviePlayerController *player; 
    NSURL *videoURL; 

    IBOutlet UIView *mainView; 
    IBOutlet UIView *secondView; 

} 

-(IBAction)view:(id)sender; 
-(IBAction)back:(id)sender; 
@property (nonatomic, retain) MPMoviePlayerController *player; 
-(void)playVideo; 

@end 

и файл реализации:

-(void)playVideo { 

    videoURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test2.mov" ofType:nil]]; 
    player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
    [player prepareToPlay]; 
    [secondView addSubview:player.view]; 
    player.view.frame = CGRectMake(92, 137, 804, 473); 
    [player.backgroundView addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test2.png"]]]; 
    player.scalingMode = MPMovieScalingModeFill; 
    player.view.backgroundColor = [UIColor clearColor]; 
    player.controlStyle = MPMovieControlStyleNone; 
    [player play]; 

} 

    -(IBAction)view:(id)sender { 




     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.2]; 
     [UIView setAnimationDelay:0.1]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 


     mainView.frame = CGRectMake(-1024, 0, 1024, 748); 
     secondView.frame = CGRectMake(0, 0, 1024, 748); 
     [UIView commitAnimations]; 

     [self performSelector:@selector(playVideo) withObject:nil afterDelay:3.0]; 

анимация работает просто отлично и воспроизведения видео, как указано в коде , но проблема заключается в том, что видео не воспроизводится с текущего установленного положения «player.view.frame = CGRectMake (92, 137, 804, 473)»; вместо этого он начинает анимацию из своих точек x, y и down, заполняя весь кадр (804,473). поэтому, как игровой слой, анимированный, прежде чем он начнет играть. Я просто хочу, чтобы игрок начал играть со своей позиции фиксации. любое решение по этому поводу?

вот что я уже сделал:

#import <QuartzCore/QuartzCore.h> 

.m файл:

[secondView.layer removeAllAnimations]; 

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

ответ

0

хорошо, не обращайте на это свою ошибку, которую я сделал сам. он должен быть таким, как при выполнении анимации uiview:

 [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationBeginAtCurrentState:YES]; //i forgot to add this line 
     [UIView setAnimationDuration:0.2]; 
     [UIView setAnimationDelay:0.1]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
     mainView.frame = CGRectMake(-1024, 0, 1024, 748); 
     secondView.frame = CGRectMake(0, 0, 1024, 748); 
     [UIView commitAnimations]; 

     [self performSelector:@selector(playVideo) withObject:nil afterDelay:3.0]; 

пс. в этом случае не нужно добавлять кварцевую структуру.

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