• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

更改 View Controller 时的 iOS 有线卡住问题

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:49:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 iOS 应用程序,它具有两种在 View Controller 之间更改和导航的方式,第一种方式是使用带有导航 Controller 的 push/pop,第二种方式是使用来自苹果文档的自定义容器 View Controller 的自定义过渡方式,

这是 Storyboard屏幕截图:

enter image description here

在 ViewController.swift 中:

var contentViewController: UIViewController! {
    didSet {
        // remove any previous views
        for view in self.contentView.subviews {
            view.removeFromSuperview()
        }

        // add the view
        // the ViewController must be aded to the children list to avoid being released (as it become a Zombie)
        self.addChildViewController(self.contentViewController)

        if registerDoneFlag {

            //do some animation
            let animation =  CATransition()
            animation.duration = 0.3
            animation.type = kCATransitionPush
            animation.subtype = kCATransitionFromTop
            animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

            self.contentView.layer.addAnimation(animation, forKey: "SwitchToView1")

            registerDoneFlag = false
        }
        if backFlag {

            //do some animation
            let animation =  CATransition()
            animation.duration = 0.3
            animation.type = kCATransitionPush
            animation.subtype = kCATransitionFromBottom
            animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

            self.contentView.layer.addAnimation(animation, forKey: "SwitchToView1")

            backFlag = false
        }

        self.contentView.addSubview(self.contentViewController.view)
        self.contentViewController.didMoveToParentViewController(self)
    }
}

我们在应用开始时制作这些动画:

func upperViewAnimation() {

    contianerTop.constant = 0
    UIView.animateWithDuration(0.45, animations: { () -> Void in

        self.view.layoutIfNeeded()

        }, completion:{(finished)  in

            if finished {

                if noInternetConnection && !noInternetConnectionPopup {

                    if isiPadFlag {

                        self.noConnectionViewHeight.constant = 60
                    }
                    else {

                        self.noConnectionViewHeight.constant = 50
                    }

                    UIView.animateWithDuration(0.3, animations: {

                        self.view.layoutIfNeeded()
                    })

                    noInternetConnectionPopup = true

                    openNoInternetConnection()

                }
                else if noInternetConnection {

                    if isiPadFlag {

                        self.noConnectionViewHeight.constant = 60
                    }
                    else {

                        self.noConnectionViewHeight.constant = 50
                    }

                    UIView.animateWithDuration(0.3, animations: {

                        self.view.layoutIfNeeded()
                    })

                }
                else {

                    self.noConnectionViewHeight.constant = 0

                    UIView.animateWithDuration(0.3, animations: {

                        self.view.layoutIfNeeded()

                        }, completion: { (finished) in

                            self.pullToRefreshAction()

                    })


                }

                self.notificationButtonAnimationAndMenuButton()
                self.moreAppsLabel.hidden = false
            }

    })

    //self.notificationButtonAnimationAndMenuButton()

}

除了在某些情况下应用程序进入有线卡住情况外,一切工作正常,导航方式工作正常(推送/弹出)但更改 View Controller 方式根本不起作用,即使应用程序执行了 contentViewController 的设置但不渲染应用程序没有任何变化



Best Answer-推荐答案


当主线程在完整的 View 加载过程中执行服务/网络请求时,我看到了类似的行为。

关于更改 View Controller 时的 iOS 有线卡住问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999786/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap