为啥点击时我的 UISearchBar 会缩小?

Posted

技术标签:

【中文标题】为啥点击时我的 UISearchBar 会缩小?【英文标题】:Why does my UISearchBar shrink when tapped?为什么点击时我的 UISearchBar 会缩小? 【发布时间】:2020-01-11 04:07:09 【问题描述】:

当我加载我的代码时,UISearchBar 会正常显示。但是,在我点击搜索字段后,搜索栏会缩小并垂直下降。代码:

class MainViewController: UIViewController, UISearchBarDelegate 

    var searchBarController: UISearchController?
    var tableViewController: UITableViewController?
    var searchBar: UISearchBar?

    override func viewDidLoad() 
        super.viewDidLoad()

        self.view.backgroundColor = .blue

        let tableViewController = UITableViewController(style: .plain)
        let searchBarController = UISearchController(searchResultsController: tableViewController)

        self.searchBarController = searchBarController
        self.tableViewController = tableViewController

        self.searchBar = self.searchBarController?.searchBar
        self.searchBar?.frame = CGRect(x: 0, y: 50, width: self.view.frame.size.width, height: 75)
        self.searchBar?.searchBarStyle = .prominent
        self.view.addSubview(self.searchBar!)

        


这是点击前后的视觉效果:

【问题讨论】:

删除 sizetoFit() 并尝试 @PratikPrajapati 抱歉打算从我的代码中删除它。我已经删除了它仍然无法使用。 为什么你使用 SearchBarCobtroller 而不是 UISearchBar.init()? @PratikPrajapati 我使用 SearchBarController 是因为我将在稍后的过程中使用它来与 tableviewcontroller 协调结果(以及任何其他 searchBarController 功能)。但是,当我删除 SearchBarController 的使用并单独初始化 UISearchBar 并将其添加到视图时,搜索栏不再缩小。为什么 SearchBarController 会这样影响 UI? 这是唯一的屏幕?你正在使用 UiSearchBarController? 【参考方案1】:

UIkit 将调整 layoutSubviews() 上 searchcontroller 视图的大小,这将重置您的框架。

如果您想独立控制搜索栏的大小,我建议您使用searchbar.translatesAutoresizingMaskIntoConstraints = false 和/或在viewDidLayoutSubview() 中使用searchbar.frame = ... 调整搜索栏的大小

【讨论】:

以上是关于为啥点击时我的 UISearchBar 会缩小?的主要内容,如果未能解决你的问题,请参考以下文章

React Native 为啥每次点击 textInput 时我的键盘都会立即消失?

为啥我打开 access 数据库 (.accdb) 时我的 winform 会调整大小,我该如何解决?

为啥当我更改它的 id 属性时我的按钮没有点击?

为啥我点击计算时我的程序冻结了?

当 UISearchBar 处于活动状态时,滚动到 UITableView 应用程序会崩溃

为啥 UISearchBar 在导航返回时会出现奇怪的闪烁?