UISearchController 在编辑时添加偏移量

Posted

技术标签:

【中文标题】UISearchController 在编辑时添加偏移量【英文标题】:UISearchController add's offset while editing 【发布时间】:2015-08-29 03:31:19 【问题描述】:

UISearchController 在编辑开始时添加一个偏移量。在横向模式下它工作得很好,但在纵向模式下却不行。

情节提要中是否有任何设置可以帮助解决此问题。

以下有效,但显示了一个动画,它在 +320 处然后又回到 -320。

func updateSearchResultsForSearchController(searchController: UISearchController) 
        self.mySearchContorller.searchBar.frame=CGRectMake(-320, 0, self.myTable.frame.size.width, 44.0)

    

我使用了带有segue(显示细节)的故事板。附件是故事板的屏幕截图。

【问题讨论】:

你是如何展示 UISearchController 的?它是从 SplitViewController 呈现还是从 DetailViewController 呈现? 它显示为 DetailViewControllrt(在 UINavigationCOntroller 内)。从 UI 中,我们可以看到它添加了 320pt 的偏移量(主列表的宽度)。不知道怎么解决,卡住了。 【参考方案1】:

下载您的项目并使用它,似乎问题就在这里: 将 self.tblSearchController.definesPresentationContext = true 更改为 definesPresentationContext = true

另外,你正在继承UITableViewController,不要创建你自己的表,而是将一个表拖到你的情节提要中并使用它。以下是您的 DetailViewController 的外观: 类 DetailTableViewController: UITableViewController

var tblSearchController:UISearchController!

override func viewDidLoad() 
    super.viewDidLoad()

    self.tblSearchController = UISearchController(searchResultsController: nil)
    self.tableView.tableHeaderView=self.tblSearchController.searchBar
    definesPresentationContext = true



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 1


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let aCell:UITableViewCell! =  tableView.dequeueReusableCellWithIdentifier("Cell")
    return aCell

【讨论】:

definesPresentationContext 是问题所在,如果它设置为 true,它将覆盖当前控制器,如果当前视图控制器或其后代呈现视图控制器。

以上是关于UISearchController 在编辑时添加偏移量的主要内容,如果未能解决你的问题,请参考以下文章

编辑开始时 UISearchController 更改宽度

UISearchController + UICollectionView 错误

UISearchController 搜索栏位置下降 64 点

添加 UISearchController 时导航栏变为白色

如何向 UISearchController 添加间隙?

UISearchController 滑动时错误的动画然后消失