gpt4 book ai didi

ios - UIView transitionWithView 奇怪的结果

转载 作者:行者123 更新时间:2023-11-29 11:21:21 27 4
gpt4 key购买 nike

我正在尝试编写一个应用程序,它使用自定义动画在 UINavigationController 的 View 堆栈中的 View Controller 之间进行转换。

现在,我正在添加同一 View 的多个后续版本,只是为了让机制正常运行。

我的视觉目标如下:
1.新建一个“FirstVC”。
2. 将[FirstVC view]的alpha值设置为0。
3. 将 [FirstVC view] 的变换值在两个方向(垂直和水平)设置为 25%。

在动画 block 中,我想完成的是:
1. 将 [OutgoingVC view] 的变换值设置为双向 500%(放大 5 倍)。
2. 将 [OutgoingVC view] 的 alpha 值设置为 0(淡出到无)。
3. 将[FirstVC view] 的transform 值设置为1(恢复到原来的大小)。4. 将[FirstVC view]的alpha值设置为1(淡入全色)。

这个动画的最终效果应该是“首页”放大并淡出,而“下一页/底页”放大(仅全屏)并淡入。这个想法是用户从中掉落地板什么的。 “更深入。”

我已将我的动画放慢到 10.0 秒间隔,以便我可以更好地处理正在发生的事情。

看起来“OutgoingVC”(即顶 View )上发生的动画是正确的。然而,底部 View 似乎很好(屏幕尺寸的 100% 和 alpha = 1.0),但它继续前进并且似乎放大到 4x/5x 并且也淡出到 alpha 为 0。一旦屏幕完全变黑,新的 UIViewController (FirstVC) 正确显示在屏幕上。

有没有人明白为什么我的代码不会按照我想要的方式运行?

谢谢!


愚蠢的我!代码如下:

- (IBAction)AddNewScreenPressed:(id)sender 
{
FirstVC *newViewController = [[FirstVC alloc] init];
UIView *currentView = [self view];
UIView *newView = [newViewController view];
[newView setTransform:CGAffineTransformMakeScale(0.25, 0.25)];
[newView setAlpha:0];
[UIView transitionWithView:[self view]
duration:10.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
[[self view] addSubview:newView];
[currentView setAlpha:0];
[currentView setTransform:CGAffineTransformMakeScale(5.0, 5.0)];
[newView setAlpha:1.0];
[newView setTransform:CGAffineTransformMakeScale(1, 1)];
}
completion:^(BOOL finished){
[[self navigationController] pushViewController:newViewController animated:NO];
}
];
}

最佳答案

您已将 newView 添加为 currentView 的 subview ,因此您对 currentView 执行的动画可能也适用于 newView - 它可能会放大并更改其 subview 的 alpha,包括 newView。您能否将 newView 的初始比例设置为 0.2,并在动画 block 中删除 newView 的重新缩放,使其最终达到 1.0 比例?不过不确定如何处理 alpha...

在看到下面的解决方案后进行编辑 - 很高兴你已经开始工作了,如果有一个单独的 View Controller 来管理过渡,它可能会更干净(如果你从屏幕上抓取图像来处理你的 View ),通过它是两个图像,所以它可以在内部做动画,所以你把它推到前面没有动画,从第一个 View 的图像开始执行你的动画,以第二个 View 的图像结束(所以你可以在两个 imageViews 上做标准动画而不是 Controller 的整个 View ),然后在完成后推送第二个 View Controller ?

关于ios - UIView transitionWithView 奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com