h 파일의 @interface 및 @end 블록 내의 resumeLayer 및 PauseLayer 메서드가 정의되었습니다. PlayPauseAction 방법에 resumeLayer 및 PauseLayer 메소드를 호출에 대한 m 파일별도의 클래스로 생성 된 UIImageview 레이어의 참조
-(void)pauseLayer:(CALayer*)layer
{
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer
{
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}
에서
@interface MainViewController : UIViewController
@property (nonatomic, retain) UIToolbar *toolbar;
@property (strong)AVAudioPlayer *audioPlayer;
@property (nonatomic, retain) NSTimer * timer;
- (void)resumeLayer:(CALayer *)layer;
- (void)pauseLayer:(CALayer *)layer;
@end
방법은
-(void)playpauseAction:(id)sender {
if([audioPlayer isPlaying])
{
[sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
[audioPlayer pause];
[self pauseTimer];
[self pauseLayer:ImageView.layer]; // Pause the CALayer of the UIImageView
}else{
[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[audioPlayer play];
[self resumeTimer];
if(isFirstTime == YES){
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
target:self
selector:@selector(displayviewsAction:)
userInfo:nil
repeats:NO];
isFirstTime = NO;
}
}
}
이미지 뷰는 내가 원하는
- (void)viewDidLoad
{
// Displays UIImageView
UIImageView* ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 5, 300, 235)];
self.view.backgroundColor = [UIColor brownColor];
// load all the frames of our animation
ImageView.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"3a.png"],
[UIImage imageNamed:@"3b.png"],
nil];
// all frames will execute in 24 seconds
ImageView.animationDuration = 24;
// start animating
[ImageView startAnimating];
ImageView.layer.borderWidth = 2;
ImageView.layer.borderColor = [[UIColor whiteColor]CGColor];
[ImageView.layer setMasksToBounds:YES];
[ImageView.layer setCornerRadius:15.0f];
[self.view addSubview:ImageView]; }
세 번째라는 이름의 클래스에 정의되어 있습니다 ~까지 다음 사용
UIImageView *myImageView = [OtherClass getTheImageView];
를 사용하여 지금은이 이미지 뷰의 참조를 얻을 수있는 방법 imageview.layer 애니메이션
을 일시
[self pauseLayer:ImageView.layer];
에서 사용할 MainViewController 클래스에서이 ImageView.layer의 참조를 얻을 재생 일시 중지 일시 중지 및 다시 시작 Imageview 레이어 애니메이션
어느 하나는 MainviewController
에 속성을 추가하고 준비하거나 이미지 뷰에 MainViewController에서 알림을 보낼 NSNotificationCenter를 사용할 때 ImageView
이 값을 설정할 수 MainviewController