美文网首页iOS 11iOS学习iOS开发
iOS 11 设置PrefersLargeTitles后出现的异

iOS 11 设置PrefersLargeTitles后出现的异

作者: 东东隆东抢 | 来源:发表于2017-09-01 18:42 被阅读2398次
    • 2017-9-10 更新:

    之前在Stack Overflow上对此问题进行了提问,但是迄今为止没有满意答案。如今我本人也倾向于这是UIkitXcode(Xcode 9正式版本,此问题还在)的缺陷。仍然在等待Apple的官方回复,或许石层大海,永远没有回复。
    iOS 11 issues with navigationBar prefersLargeTitles

    最近还发现了一个在storyboard里设置imageViewtintColor不起作用,但是使用code设置却正常,我个人觉得也可能是Xcode的缺陷。
    tintColor of UIImageView doesn't work with storyboard,but work with code

    • 2017-9-14 更新:

    等待了2周,终于等到Apple的回复:

    Apple回复.png

    传2个工程文件给Apple,继续等待……

    • 2017-9-22更新:

    关于imageView tintColor问题,Apple今天给出了回复:已知缺陷,还没有修复:

    Apple 关于storyboard里使用tintColor问题回复.png

    既然已有其他人提了bug,为何Apple没有修复?继续等第1个问题的进一步回复。


    最近我自己的MacBook Air出现了输入密码后卡在读取进度条,再之后黑屏关机问题,无奈之下重装系统,比较悲剧的是之前写的一些Demo都没有备份或者上传至gitHub。在此提醒大家,随时备份。
    今天想写的主题是关于iOS 11里新出的功能prefersLargeTitles,即设置navigationBar上的title为大字体,效果如下(重点看navigationBar):

    系统App效果.gif
    个人觉得既然是新推出来的东西,还是得运用下,开发环境:Swift 4.0,Xcode 9 ,iOS 11
    为了便于说明存在的bug,我自己写了一个demo:一个viewController视图上包含一个 imageView(做背景图)和tableView
    storybord 里subview层次
    原本目标是想要做到类似效果,代码如下:
    self.title = "OMNI Remotes"
    //tableView背景透明
    tableView.backgroundColor = .clear
    //navBar 透明
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    //去除阴影线
    navigationController?.navigationBar.shadowImage = UIImage()
    //设置大字体
    navigationController?.navigationBar.prefersLargeTitles = true
    //滑动时隐藏searchBar
    navigationItem.hidesSearchBarWhenScrolling = true
    //将searchController赋值给navigationItem
    let sc = UISearchController(searchResultsController: nil)
    navigationItem.searchController = sc
    

    代码非常简单,不做过多解释,直接Run工程,发现了问题。此前,我一直怀疑是不是自己的项目有问题,但在这个简单到不能再简单的demo里还是出现了一模一样的问题,我就高度怀疑是Unkit bug。

    • issue one:虽然设置去掉阴影线,但是实际navigationBar的阴影线并没有去掉
    • issue two:滑动tableView时无法隐藏searchBar且不能从largeTitles状态回到正常大小状态
      实际效果.gif
      Google了很久也没有发现相关问题,但在苹果开发者论坛上发现有几个开发者遇到了issue two ,但是issue1貌似只有我遇到了。
      这是个神奇的世界,当我删掉imageView视图后,上述issue two问题竟然消失了(仔细看图,你会发现issue one还在哦)天呐,这是个Bug吗?Anyway,先上报给Apple,期待他们的回复。
      删除imageView后效果
      最后我想说的是,从升级至Xcode9(beta2 ->beta6->正式版),各种莫名其妙问题,最为严重的是在我的Air上运行时经常莫名其妙导致我笔记本屏幕闪烁,有时候显示CPU使用105%,然后自动重启。不运行Xcode 9时一点毛病都没有。

    相关文章

      网友评论

      • Hoony胡:iOS 12 Swift 写出来的 可以把NavigationBar缩回去 但是OC写的就不行 emmmmmm 代码是一样的
        Hoony胡:我说的缩回去 是指 行数不够的时候往上拉回去 补充下
      • 鬼丶白:你好,我设置了导航栏背景图片大标题就滑动不了了 怎么解决啊
        东东隆东抢:@soime 我暂时没遇到过,你可以网上Google看看,stack overflow上也可以看看问问。
        鬼丶白:@东东隆东抢 标题不能滑动
        东东隆东抢:@soime 标题不能滑动还是?
      • 孤独感爆棚:大标题的颜色貌似还不能改。。。。
        孤独感爆棚:@东东隆东抢 应该是这样的navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
        孤独感爆棚:@东东隆东抢 会报错吧
        东东隆东抢:我记得这个是可以修改:` navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor:.blue]` 试试这段代码。
      • rain__bow__:问下,issue two问题解决了吗?
        rain__bow__:@东东隆东抢 嗯嗯 用了代码没问题
        东东隆东抢:没有吧 建议不要用storyboard,使用Xcode 9 各种莫名其妙问题

      本文标题:iOS 11 设置PrefersLargeTitles后出现的异

      本文链接:https://www.haomeiwen.com/subject/daykjxtx.html