Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 11动画大屏幕显示模式_Ios_Swift_Uitableview_Ios11 - Fatal编程技术网

iOS 11动画大屏幕显示模式

iOS 11动画大屏幕显示模式,ios,swift,uitableview,ios11,Ios,Swift,Uitableview,Ios11,我在显示视频的UIViewController中有一个UITableView。当我向下滚动时,我想设置从大标题到小标题的动画。我目前使用的代码是: func scrollViewDidScroll(_ scrollView: UIScrollView) { if #available(iOS 11.0, *) { UIView.animate(withDuration: 0.35, animations: { if scro

我在显示视频的UIViewController中有一个UITableView。当我向下滚动时,我想设置从大标题到小标题的动画。我目前使用的代码是:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if #available(iOS 11.0, *) {
            UIView.animate(withDuration: 0.35, animations: {
                if scrollView.contentOffset.y <= 128 {
                    self.navigationItem.largeTitleDisplayMode = .always
                } else {
                    self.navigationItem.largeTitleDisplayMode = .never
                }
            })
        }
    }
func scrollViewDidScroll(scrollView:UIScrollView){
如果可用(iOS 11.0,*){
UIView.animate(持续时间:0.35,动画:{

如果符合UITableViewDelegate,请添加以下代码:

var canTransitionToLarge = false

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    func animate(){
        self.navigationController?.navigationBar.setNeedsLayout()
        self.view.setNeedsLayout()
        UIView.animate(withDuration: 0.25, animations: {
            self.navigationController?.navigationBar.layoutIfNeeded()
            self.view.layoutIfNeeded()
        })
    }
    if canTransitionToLarge && scrollView.contentOffset.y <= 0 {
        self.navigationItem.largeTitleDisplayMode = .always
        animate()
        canTransitionToLarge = false
    }
    else if !canTransitionToLarge && scrollView.contentOffset.y > 0 {
        self.navigationItem.largeTitleDisplayMode = .never
        animate()
        canTransitionToLarge = true
    }
}

如果您符合UITableViewDelegate,请添加以下代码:

var canTransitionToLarge = false

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    func animate(){
        self.navigationController?.navigationBar.setNeedsLayout()
        self.view.setNeedsLayout()
        UIView.animate(withDuration: 0.25, animations: {
            self.navigationController?.navigationBar.layoutIfNeeded()
            self.view.layoutIfNeeded()
        })
    }
    if canTransitionToLarge && scrollView.contentOffset.y <= 0 {
        self.navigationItem.largeTitleDisplayMode = .always
        animate()
        canTransitionToLarge = false
    }
    else if !canTransitionToLarge && scrollView.contentOffset.y > 0 {
        self.navigationItem.largeTitleDisplayMode = .never
        animate()
        canTransitionToLarge = true
    }
}

您不需要这样做。当您滚动时,标题应自动从小变大,反之亦然。但不要这样做。这可能是因为我在UIViewControllery中使用UItableview。在这种情况下,您应该使用UITableViewController,如果您不想使用它,请参阅我的回答。您不需要这样做。标题应更改当您滚动时,会自动从小到大或从小到大,反之亦然。但不会。这可能是因为我在UIViewController中使用了UItableview。对于这种情况,您应该使用UITableViewController,如果您不想使用它,请查看我的答案