我有一个图像墙(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。怎么可能?
当然,我只想对单个图像设置动画效果。
最佳答案
以下是过渡在概念上的工作方式:
在您的情况下,父 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/