Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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 10-如何创建自定义导航栏大标题_Ios_Swift_Uinavigationbar_Ios10_Large Title - Fatal编程技术网

iOS 10-如何创建自定义导航栏大标题

iOS 10-如何创建自定义导航栏大标题,ios,swift,uinavigationbar,ios10,large-title,Ios,Swift,Uinavigationbar,Ios10,Large Title,我的应用程序部署目标版本是iOS 10。我在我的应用程序中添加了导航栏大标题。在iOS 10以上版本中,它可以根据需要工作。如果我尝试在iOS 10中测试它,它将不起作用。因此,我也在尝试为iOS 10创建自定义导航栏大磁贴。但我不知道如何做到这一点。请引导我。提前谢谢 if #available(iOS 11.0, *) { navigationController?.navigationBar.prefersLargeTitles = true } else

我的应用程序部署目标版本是iOS 10。我在我的应用程序中添加了导航栏大标题。在iOS 10以上版本中,它可以根据需要工作。如果我尝试在iOS 10中测试它,它将不起作用。因此,我也在尝试为iOS 10创建自定义导航栏大磁贴。但我不知道如何做到这一点。请引导我。提前谢谢

    if #available(iOS 11.0, *) {
         navigationController?.navigationBar.prefersLargeTitles = true
    } else { 
         // need to add here as well
    }

导航栏
标题
所在的位置有一个标题视图对象。您可以自定义一个
标签
,以按照自己的意愿进入导航栏,并制作
导航栏。titleView=yourLabel
,或者制作一个自定义ui视图

您可以在导航栏的标题视图中添加视图。您还可以将图像添加到导航栏。 请参考以下链接:-


以防有人需要。我是这样做的。对我来说,这比默认设置要好,因为它支持从大标题(例如多行)中进行的任何自定义

在我的例子中,我的布局是这样的。您可以随意选择标题,但请确保标题不在表视图/滚动视图中

看法

  • 看法
    • 大标题标签
    • 视图(此视图将粘贴在顶部)
  • 看法
    • 表视图
    • 看法
  • 看法
在本例中,我使用了scrollViewDidScroll委托,它检查scrollView内容偏移以更改标题标签顶部约束。对我来说,最高限制是16。把它换成你想要的任何东西


请参阅以下帮助:@Anbu.Karthik是的,我们可以通过这种方式获得大标题。但我也需要滚动。如果集合视图滚动需要将导航栏平铺移动到中心。值得一提的是,iOS 10上的用户不习惯在应用程序中看到大标题。我个人喜欢保持应用程序的外观和感觉与它所在的iOS版本相适应。因此,您可能不想尝试在iOS 10上使用大型标题。我不明白您为什么要更改外观。如果可以的话,为什么您的部署目标是iOS 10?我认为,大型导航栏标题是在iOS 12中出现的。@ojassethi快速查看UINavigationBar的文档可以发现,所有与大型标题相关的API都是在iOS 11中添加的,而不是在iOS 12中添加的。
 extension YourViewController: UITableViewDelegate {
    public func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let titleHeight = titleLabel.bounds.height
        if (scrollView.contentOffset.y <= 0) {
            // Title is fully visible - table view is at the top
            titleLabelTopConstraint.constant = 16
            isLargeTitleHidden = false
        } else if (scrollView.contentOffset.y > (titleHeight + 16)){
            // Title is not visible at all. Table view is at an unknown position but it is not top
            titleLabelTopConstraint.constant = -titleHeight
            isLargeTitleHidden = true
        } else {
            // Title is kind of visible. Not fully hidden or shown.
            titleLabelTopConstraint.constant = -scrollView.contentOffset.y + 16
            isLargeTitleHidden = false
        }
    } }
var isLargeTitleHidden: Bool = false {
    didSet{
        if (oldValue != isLargeTitleHidden){
            updateNavBar()
        }
    }
}
func updateNavBar(){
    let fadeTextAnimation = CATransition()
    fadeTextAnimation.duration = 0.2
    fadeTextAnimation.type = CATransitionType.fade

    navigationController?.navigationBar.layer.add(fadeTextAnimation, forKey: "fadeText")
    
    if isLargeTitleHidden {
        navigationItem.title = titleLabel.text
    } else {
        navigationItem.title = ""
    }
}