1

ImageView is defined in class named Third

- (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]; }

How can i get reference of this image view.layer from this third class to another class.

Basically i want to use pause layer and resume layer for image view animation.

To use

 [self pauseLayer:myImageView.layer]; // Pause the CALayer of the UIImageView

I should have reference some thing like this but don't know how to implement it in viewdidload of third class or where to implement it in third class or in another class.

 UIImageView *myImageView = [OtherClass getTheImageView];

So looking for some help.

Thanks.

4

1 に答える 1

1

私はそれを解決しました。別のクラスでは、3番目のクラスをロードしていましたが、コードは以下のとおりです

-(void)Third {
Third *thirdController = [[Third alloc] init];
thirdController.view.frame = CGRectMake(0, 0, 320, 480);
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:kCATransitionReveal]; 
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionReveal];
[self.view addSubview:thirdController.view]; 
[self.view addSubview:toolbar];
[thirdController release];
self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Fourth) userInfo:nil repeats:NO];
}

この読み込みコードで同じレイヤーを使用していました。なので参考にさせていただきました。

使った

[self pauseLayer:self.view.layer];

イメージ ビュー アニメーションの一時停止と再開

[self resumeLayer:self.view.layer];

したがって、基本的に playpauseAction では、タイマーを一時停止して再開するときに、画像 view.layer アニメーションを一時停止して再開しています

 -(void)playpauseAction:(id)sender {

if([audioPlayer isPlaying])
{
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
    [audioPlayer pause];
    [self pauseTimer];
    [self pauseLayer:self.view.layer]; 
}else{
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [audioPlayer play];
    [self resumeTimer];
    [self resumeLayer:self.view.layer];
 if(isFirstTime == YES)
    {
        self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                      target:self
                                                    selector:@selector(displayviewsAction:)
                                                    userInfo:nil
                                                     repeats:NO];
        isFirstTime  = NO;
    }
    } 
    }

それはとても簡単で、これを解決するために2日を無駄にしましたが、問題なく魅力的に機能していることに最終的に満足しています.

于 2012-06-22T21:07:31.137 に答える