首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISearchController小故障放置在UINavigationItem - iOS 11+中

UISearchController小故障放置在UINavigationItem - iOS 11+中
EN

Stack Overflow用户
提问于 2019-10-29 11:58:27
回答 1查看 138关注 0票数 1

我有UISearchControllerFirstViewController's navigationItem,在SecondViewController中也是一样,我把SecondViewControllerFirstViewController推出来。

当用户幻灯片返回时,下面的UI故障是可见的。

包含UISearchController的区域变得模糊。如果用户返回到FirstViewController,它看起来很好。但是,如果用户在滑动了一点之后仍然停留在SecondViewController中,那么这就是它的样子。

拥有searchController的空间现在是空的。如果用户向上或向下滚动,searchController将再次可见。

各种办法试图解决这些问题

viewWillAppear

  • setting

  • 使用UITableViewController代替UIViewController,在viewDidLoad中具有UITableViewController navigationItem.hidesSearchBarWhenScrolling属性,在viewWillDisappear

中使用navigationItem.searchController作为nil

除了这个问题,当我在一个UITableView中使用UIViewController时,searchController隐藏在标题下面,它的发布速度略高于本地应用程序,比如消息、邮件。当我使用UITableViewController时,动画是平滑的,但是如果用户没有完全上下滑动,searchController就会被击中一半,如下所示。无论是否有大标题,都会发生这种情况。

如果有人能回答this question,我的使用程序也可以实现。

更新:将extendedLayoutIncludesOpaqueBars设置为SecondViewController中的true确实解决了这个问题。但是在桌面视图中有一个轻微的不想要的冲动,如果用户幻灯片返回,然后改变他/她的想法。

EN

回答 1

Stack Overflow用户

发布于 2019-10-29 13:25:08

请试试这个..。对我来说很管用。我希望这对你也有用。

目标-C

代码语言:javascript
复制
-(void)viewWillDisappear:(BOOL)animated{
    if (@available(iOS 13.0, *)) {
        [self.navigationController.view setNeedsLayout]; 
        [self.navigationController.view layoutIfNeeded];
    }
}

Swift

代码语言:javascript
复制
func viewWillDisappear(_ animated: Bool) {
    if (@available(iOS 13.0, *)) {
         self.navigationController?.view.setNeedsLayout()     
         self.navigationController?.view.layoutIfNeeded()
    }
}

如果不能工作,则在推送或显示ViewController时,设置动画NO或false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58607024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档