Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我的核心动画块不是';我不能像我一样工作;我希望_Iphone_Animation_Uiview_Core Animation - Fatal编程技术网

Iphone 我的核心动画块不是';我不能像我一样工作;我希望

Iphone 我的核心动画块不是';我不能像我一样工作;我希望,iphone,animation,uiview,core-animation,Iphone,Animation,Uiview,Core Animation,我有一个名为activityView的ui视图,它包含两个子视图activityIndicator和取消操作按钮。这些视图嵌入到XIB中,并连接到我的视图控制器 我有两种方法来处理激活(显示)和停用(隐藏)这两个子视图: - (void) enableActivityIndicator { [activityIndicator startAnimating]; [cancelOperationsButton setHidden:NO]; } - (void) disableAc

我有一个名为
activityView
ui视图,它包含两个子视图
activityIndicator
取消操作按钮
。这些视图嵌入到XIB中,并连接到我的视图控制器

我有两种方法来处理激活(显示)和停用(隐藏)这两个子视图:

- (void) enableActivityIndicator {
    [activityIndicator startAnimating];
    [cancelOperationsButton setHidden:NO];
}

- (void) disableActivityIndicator {
    [activityIndicator stopAnimating];
    [cancelOperationsButton setHidden:YES];
}
就其本身而言,这两种方法效果很好

为了使其更加完善,我想添加一个动画,使这些子视图淡入淡出:

- (void) enableActivityIndicator {
    [activityIndicator startAnimating];
    [cancelOperationsButton setHidden:NO];

    [UIView beginAnimations:@"fadeIn" context:nil];
    [UIView setAnimationDelay:0.0f];
    [UIView setAnimationDuration:1.0f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    activityView.alpha = 1.0f;
    [UIView commitAnimations];
}

- (void) disableActivityIndicator {
    [UIView beginAnimations:@"fadeOut" context:nil];
    [UIView setAnimationDelay:0.0f];
    [UIView setAnimationDuration:1.0f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    activityView.alpha = 0.0f;
    [UIView commitAnimations];

    [activityIndicator stopAnimating];
    [cancelOperationsButton setHidden:YES];
}
但是动画不起作用-子视图只是显示或消失,而父视图的
alpha
属性对透明度没有影响

我应该如何编写这些方法来获得我想要的淡入淡出效果

编辑

这里有一个完美的安排:

- (void) enableActivityIndicator {
    activityView.alpha = 0.0f;
    [activityIndicator startAnimating];
    [cancelOperationsButton setHidden:NO];

    [UIView beginAnimations:@"fadeIn" context:nil];
    [UIView setAnimationDelay:0.0f];
    [UIView setAnimationDuration:0.2f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    activityView.alpha = 1.0f;
    [UIView commitAnimations];
}

- (void) disableActivityIndicator {
    [UIView beginAnimations:@"fadeOut" context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(disableActivityIndicatorComplete)];
    [UIView setAnimationDelay:0.0f];
    [UIView setAnimationDuration:0.2f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    activityView.alpha = 0.0f;
    [UIView commitAnimations];
}

- (void) disableActivityIndicatorComplete {
    [activityIndicator stopAnimating];
    [cancelOperationsButton setHidden:YES];
}

在“启用”中,将视图设置为“在设置为不透明动画之前清除”

- (void) enableActivityIndicator {
    ...
    activityView.alpha = 0.0f;
    [cancelOperationsButton setHidden:NO];
    ...
在“禁用”中,在动画完成之前不要隐藏视图

- (void) disableActivityIndicator {
    ...
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(hideComplete)];
    ...

- (void) hideComplete {
    [activityIndicator stopAnimating];
    [cancelOperationsButton setHidden:YES];
}