ios – transitionFromView:和翻转的奇怪行为.

前端之家收集整理的这篇文章主要介绍了ios – transitionFromView:和翻转的奇怪行为.前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个图像墙(UIScrollView),在那里我有很多UI ImageView.

这是我的代码

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];
}@H_502_5@ 
 

这是我的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
                            }];

        }
    }
}@H_502_5@ 
 

当我使用时:

UIViewAnimationOptionTransitionCrossDissolve这仅对我在ScrollView中的图像有效.
当我在这段代码中使用UIViewAnimationOptionTransitionFlipFromTop这会影响到我的scrollView.

怎么可能?

当然我想要仅针对单张图像的动画效果.

解决方法

以下是转换在概念上的工作原理:

>系统将fromView的父视图的当前状态呈现为屏幕外缓冲区(“之前”状态)
> fromView从其父视图中删除
> toView被添加到parentView(可以是nil,你是对的;在这种情况下没有添加任何内容)
>系统将父视图渲染到屏幕外缓冲区(“后”状态“)
>系统将父视图从“之前”状态转换为“之后”状态的动画

在您的情况下,父视图是滚动视图,因此整个滚动视图已过渡.与您的感知相反,即使使用交叉溶解也是如此.只是大多数的scrollview(未被fromView覆盖的部分)在之前和之后都是相同的,所以看起来好像那部分没有参与过渡 – 但确实如此.

如果我理解正确,你在滚动视图中水平排列多个图像视图堆栈,并且每当有人双击堆栈中的“最上面”图像视图时,你想要“直接”显示它下面的图像,而不会影响其他堆栈.

如果您为scrollView中的每个堆栈添加一个容器视图,该堆栈与堆栈大小相同,并将此堆栈的所有ImageViews放入此容器视图中而不是直接放入滚动视图中,它将起作用.点按,就像你最初那样从点击视图转换为nil.屏幕上的过渡大小将仅限于容器视图(粗略地说 – 卷曲和翻转使用其框架之外的一些空间).

根据您的要求,您可能希望在删除堆栈中的最后一个映像后删除堆栈的容器视图.

猜你在找的iOS相关文章