gpt4 book ai didi

iphone - UINavigationController 自定义过渡动画

转载 作者:行者123 更新时间:2023-12-03 21:12:23 25 4
gpt4 key购买 nike

我有一个 UINavigationController,它有一个可见的导航栏和工具栏。当按下 Controller (同一 Controller )时,我只想为内容部分设置动画(例如具有滑动效果),并保持导航栏和工具栏无动画/不变。任何人都可以就干净的方式提供任何建议吗?谢谢。

最佳答案

我会手动移动 View 并使用动画 block 为它们设置动画:

// Get position of old view controller
CGPoint center = [oldViewController.view center];

// Position new view controller to the right of old one
[newViewController.view setCenter:CGPointMake(center.x + 320, center.y)];

// Animate change
[UIView beginAnimations:@"myAnimation" context:NULL];

// Move old view off screen
[oldViewController.view setCenter:CGPointMake(center.x - 320, center.y)];

// Move new view onto screen
[newViewController.view setCenter:center];

// Set animation delegate to self so that we can detect when animation is complete
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationComplete:finished:target:)];

// Finish animation block
[UIView commitAnimations];

如果您需要使用导航 Controller 实际推送新的 View Controller ,您需要确保在动画完成后执行此操作,否则旧 View 将不会显示。为此,您需要使用 setAnimationDelegate 方法来获取动画何时完成的通知,并传入要调用的选择器方法。在同一个类中实现上面的代码和下面的方法:

(void)animationComplete:(NSString *)animationId 
finished:(BOOL)finished
target:(UIView *)target
{
if([animationId isEqualToString:@"myAnimation"])
{
// Push viewcontroller here
}
}

关于iphone - UINavigationController 自定义过渡动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324909/

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