gpt4 book ai didi

ios - 如何在 iOS 中显示带有动画的容器 View ?

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:28 24 4
gpt4 key购买 nike

我想在用户点击原始 View Controller 中的按钮时显示我自己的自定义 View ,因此我尝试定义以下用户点击按钮时引起的功能:

func show() {
vc = UIViewController()
var button = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
button.backgroundColor = UIColor.redColor()
button.addTarget(self, action: "hide", forControlEvents: UIControlEvents.TouchDown)
vc.view.addSubview(button)

self.addChildViewController(vc)
self.view.addSubview(vc.view)
vc.didMoveToParentViewController(self)
}

然而,当用户点击按钮时,容器 View 突然显示在屏幕上,但我想让它显示得更流畅。所以接下来我尝试用动画重写它,但是我碰壁了,因为我不知道我应该写什么才能用动画显示它:

transitionFromViewController(self, toViewController: vc, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {() -> Void in
self.addChildViewController(self.vc)
self.view.addSubview(self.vc.view)
}, completion: {
Bool -> Void in
self.vc.didMoveToParentViewController(self)
})

这会返回一个错误:'NSInvalidArgumentException', reason: 'Children view controllers <mmmmlvalsllsl.ViewController: 0x7fc980f71f70> and <UIViewController: 0x7fc980f6dd00> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]' .

我想我应该使用该方法,但我不知道在animations:中写什么代码块和什么completion: block 。

如何编写动画代码?

最佳答案

您可以使用 view transitioning像这样:

UIView.transitionWithView(self.view, duration: 0.5, options: .TransitionFlipFromLeft, animations: { _ in
self.view.addSubview(self.vc.view)
}, completion: nil)

这将对容器 View 内容的变化进行动画处理(以反射(reflect)正在添加的 subview ),而不是尝试对 View Controller 转换本身进行动画处理。您将完全不需要使用 transitionFromViewController

关于ios - 如何在 iOS 中显示带有动画的容器 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171220/

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