我有一个图像墙(UIScrollView),那里有很多UIImageView's

这是我的代码:

for (ThumbPosterModel *tPoster in _thumbsPosterStack) {

    UIImageView *imageView = [[UIImageView alloc] initWithImage:tPoster.thumb];
    imageView.userInteractionEnabled = YES;
    imageView.frame = CGRectMake(i, imageView.frame.origin.y, imageView.frame.size.width, imageView.frame.size.height);

    [tPoster setTag:tag];
    [_posterTagArr addObject:(BasicPosterModel*)tPoster];

    imageView.tag = tag;
    tag++;
    [posterWallScrollView addSubview:imageView];

    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageDoubleTapped:)];
    doubleTap.numberOfTapsRequired = 2;
    [imageView addGestureRecognizer:doubleTap];
}

这是我的IBAction:
-(IBAction)imageDoubleTapped:(id)sender {
    NSInteger selectTag = (((UIGestureRecognizer*)sender).view.tag);
    for (BasicPosterModel *bPoster in _posterTagArr) {
        if(bPoster.tag == selectTag) {
            [UIView transitionFromView:(UIImageView*)((UIGestureRecognizer*)sender).view
                                toView:mySecordView //let's say next ImageView. Doesn't matter
                              duration:1.0
                               options:UIViewAnimationOptionTransitionCrossDissolve
                            completion:^(BOOL finished) {
                                // animation completed
                            }];

        }
    }
}

当我使用时:
UIViewAnimationOptionTransitionCrossDissolve这仅对ScrollView中的图像具有效果
当我在此代码中使用UIViewAnimationOptionTransitionFlipFromTop时,这会影响我的scrollView。

怎么可能?

当然,我只想对单个图像设置动画效果。

最佳答案

以下是过渡在概念上的工作方式:

  • 系统将fromView的父 View 的当前状态呈现到屏幕外缓冲区(“之前”状态)
  • fromView已从其父 View 中删除
  • 将toView添加到parentView中(可以为nil,您是对的;在这种情况下,不添加任何内容)
  • 系统将父 View 呈现到屏幕外缓冲区(“之后”状态”)
  • 系统会动画化父 View 从“之前”状态到“之后”状态的转换

  • 在您的情况下,父 View 是滚动 View ,因此整个滚动 View 已过渡。与您的看法相反,即使使用交叉溶解也是如此。只是滚动 View 的大部分(fromView未涵盖的部分)在前后是相同的,因此看起来该部分不参与过渡,但确实如此。

    如果我理解正确,则您是在滚动 View 中水平排列多个 ImageView ,每当有人双击堆栈中“最上方”的 ImageView 时,您都希望直接“显示”其下方的图像,而不会影响其他堆栈。

    如果您为每个堆栈添加一个与堆栈大小相同的容器 View ,并将其所有ImageView放入该容器 View 中而不是直接放入滚动 View 中,则将其添加到每个堆栈中。轻按一下,就像从您最初所做的那样,从轻按 View 过渡到无。屏幕上过渡效果的大小将限于容器 View (大约- curl 和翻转会在其框架之外使用一些空间)。

    根据您的要求,您可能要在删除堆栈中的最后一个图像后删除堆栈的容器 View 。

    关于ios - transitionFromView : and strange behavior with flip.,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11847743/

    10-09 09:56