- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在用户点击后退按钮返回到我的 Root View Controller 时执行动画。动画将简单地突出显示用户在详细 View Controller 中所做的更改。
我试过了。动画本身可以工作(对于我的问题来说并不是真正重要的,只是将其保留以说明我正在做什么。)问题是连续发生太快,您看不到动画。
如何等待
执行 viewWillDisappear 直到动画完成?
override func viewWillDisappear(animated: Bool) {
// ...
// Animate if text changes. reminderAfterRulesRun is a custom data structure. reminderNameTextInput is my outlet to my label
if reminderNameTextInput.text != reminderAfterRulesRun.title {
let originalreminderNameTextInputColor = self.reminderNameTextInput.textColor
// Animate the removing of "All" and replacing it with the most commonly used list.
UIView.animateWithDuration(0.3, delay: 0, options: .Autoreverse, animations: {
// Fade out
self.reminderNameTextInput.textColor = UIColor.redColor()
self.reminderNameTextInput.text = reminderAfterRulesRun.title
self.reminderNameTextInput.alpha = 0.0
}, completion: {
(finished: Bool) -> Void in
// Once the label is completely invisible, set the text and fade it back in
UIView.animateWithDuration(0.3, delay: 0, options: .Autoreverse, animations: {
// self.reminderNameTextInput.selectedSegmentIndex = self.toSegmentedControlValue(reminderAfterRulesRun.reminderNameTextInput)!
self.reminderNameTextInput.text = reminderAfterRulesRun.title
self.reminderNameTextInput.textColor = originalreminderNameTextInputColor
self.reminderNameTextInput.alpha = 1.0
}, completion: nil)
})
}
}
最佳答案
看起来您需要使用 View Controller Transition API。在较高级别,您需要在 View Controller 中实现 UINavigationControllerDelegate
协议(protocol)方法。当您将 View Controller 设置为 Nav Controller 的委托(delegate)并且即将发生转换时,将调用此方法。在这里您可以检查并查看交互中涉及哪些 View Controller 以及转换的方向(推送或弹出)。使用此信息,您可以提供合适的动画师。
- (id<UIViewControllerAnimatedTransitioning>)
navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC
{
if (operation == UINavigationControllerOperationPush) {
return self.animator;
}
return nil;
}
“动画师”是一个 NSObject 子类,它实现了 UIViewControllerAnimatedTransitioning
协议(protocol)。该协议(protocol)具有询问转换时间的方法
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext
{
return 0.25;
}
然后调用实现转换:
- (void)animateTransition: (id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
[[transitionContext containerView] addSubview:toViewController.view];
toViewController.view.alpha = 0;
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
fromViewController.view.transform = CGAffineTransformMakeScale(0.1, 0.1);
toViewController.view.alpha = 1;
} completion:^(BOOL finished) {
fromViewController.view.transform = CGAffineTransformIdentity;
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
}];
}
关于ios - 等待执行 viewWillDisappear 直到自定义动画完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427018/
我在我的应用程序中使用导航 Controller 。我尝试单击一个按钮(不在导航栏中)的一个 UI viewWillDisappear 未被调用。但我没有使用 navigationController
我在选项卡 View 中有一个表单;我将任何字段的表单标记为已更改,如果表单是脏的(代替“保存”按钮),我想弹出一个带有“保存”/“取消”的 ActionSheet。在用户响应正在处理的 Action
我制作了一个播放器应用。当用户关闭应用程序(进入后台模式)并调用 viewWillDisappear 时,播放器停止播放音频。 我无法在 applicationDidEnterBackground 中
我有一个带有文本字段的 UITableviewController。文本字段包含必填字段。 如果用户没有输入所有字段就离开了屏幕,我想用 alertview 提醒用户。我在 viewwilldisap
我有一个 UIViewController,ViewControllerA,它显示为来自 RootViewController 类的模态视图 Controller 。 ViewControllerA
我的应用程序使用带有 splitviewcontroller 的 Storyboard。在左侧,我有带有选项列表的表格 View 。在右侧,我有一些关于左侧选项的信息。就像在设置应用程序中一样。当用户
我有一个带有两个简单屏幕的应用程序。第一个屏幕始终打开第二个屏幕的相同实例。第二个屏幕有一个文本字段和一个用于手动隐藏键盘的按钮。 viewWillDisappear 上的 resignFirstRe
我有一个 iOS 应用程序,它使用远程服务器上托管的数据库。 在 ViewWillDisappear 函数内执行数据库 INSERT 是否可能或只是不好的做法? 我似乎找不到太多有关 Apple 在该
我想在用户点击后退按钮返回到我的 Root View Controller 时执行动画。动画将简单地突出显示用户在详细 View Controller 中所做的更改。 我试过了。动画本身可以工作(对于
我是 Swift 的新手,我在我的应用程序中发现了一些奇怪的崩溃。 Fabric 报告说崩溃发生在 viewWillDisappear() 中。 我有两个 ViewControllers。用户在 A
在 viewWillDisappear 上,我需要更新很多 Core Data 记录,这样做会在我从一个 viewController 移动到另一个(通过 Tab View Controller)时造
所以我的应用程序中有一个 UINavController 并且我试图在用户按下后退按钮时执行一个方法。我到处搜索,只能找到断章取义的零碎内容。 有没有一种方法可以实现某种检查,在用户按下后退按钮关闭当
我需要检查 viewWillDisappear: 是否被调用,因为我将另一个 UIViewController 呈现为模态。有谁知道这是否可能? 更新 我想知道为什么要调用它。例如,如果它被弹出或者另
我有以下场景: 在 vcA 中(当用户点击 UI 中的按钮时): 使用 NIB 文件实例化 vcB -(当用户点击 UI 中的按钮时) 在 vcB 中初始化一个 iVar 使用 presentModa
是否有 viewWillDisappear 等同于 CCScenes ? 就像 onExit 等价于 viewDidDisappear 或 onEnter 等价于 viewDidAppear . 最佳
当我正在搜索然后切换 UItab 时,不会调用 ViewWillDisappear。知道为什么当我过滤结果显示和切换选项卡时 ViewWillDisappear 没有被调用吗? func update
这是之前 Unresolved 帖子的后续内容。我在 TableView 中有一个导航 Controller 、一个 TableView Controller 和一个搜索栏。所有这些都内置在 Stor
这是日志输出 2013-03-16 14:02:59.301 Echo[65406:4503] child viewWillDisappear start 2013-03-16 14:02:59.30
我有一个简单的导航层次结构: Controller 1 > Controller 2 > Controller 3 每个 Controller 都包含对其子级和父级的引用(@property(非原子,
我有一个包含 UIWebView 的 View ,它正在加载谷歌地图(所以有很多 JavaScript 等)。我遇到的问题是,如果用户在 Web View 完成加载之前点击导航栏上的“后退”按钮,我不
我是一名优秀的程序员,十分优秀!