UISearchController 自定义高度的坑

项目里需要自定 UISearchController 的高度,本来这很简单的一件事,结果折腾了不少时间,主要是设置高度时遇到了坑,目测在 OC 时并没有发现什么问题,只有在 Swift 上才发现有问题。。。这里记录下,备忘!!!

正常流程就是继承 UISearchController,然后重写 init 方法:

class JCSearchController: UISearchController {
    
    override init(searchResultsController: UIViewController?) {
        super.init(searchResultsController: searchResultsController)
        _init()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        _init()
    }
   
    private func _init() {
        self.dimsBackgroundDuringPresentation = false
        self.hidesNavigationBarDuringPresentation = true
        self.searchBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 31)
        self.searchBar.barStyle = .default
        self.searchBar.backgroundColor = .white
        self.searchBar.barTintColor = .white
        self.searchBar.delegate = self
        self.searchBar.autocapitalizationType = .none
        self.searchBar.placeholder = "搜索"
        self.searchBar.layer.borderColor = UIColor.white.cgColor
        self.searchBar.layer.borderWidth = 1
        self.searchBar.layer.masksToBounds = true
    }
}

多么简单的一件事,但结果有输入时内容时,JCSearchController 的高度变大了,可以通过 searchBarTextDidEndEditing 等方式查看 searchBar 的确是变大了,但以前在 OC 上并没有这个问题,回头再研究下的,现在说下解决方法吧。

搜索了下,说可以通过 searchBarTextDidEndEditing 等方法中重新设置 searchBar 的 frame.size.height,设置后部分情况的克是可以解决的, 但点 取消 按键时,高度又不正常的,自己也思考了下,如果他的大小变化了,就一定会调用 viewDidLayoutSubviews, 还有其它情况下,同时在 viewDidDisappear 中也重新设置高度就可以,经过测试可以覆盖所有的情况了,完整的代码如下:

override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        var frame = self.searchBar.frame
        frame.size.height = 31
        self.searchBar.frame = frame
    }
    
    override func viewDidLayoutSubviews() {
          
        super.viewDidLayoutSubviews()
        // 去除边黑边
        self.searchBar.layer.borderColor = UIColor.white.cgColor
        self.searchBar.layer.borderWidth = 1
        self.searchBar.layer.masksToBounds = true
        
        var frame = self.searchBar.frame
        frame.size.height = 31
        self.searchBar.frame = frame
    }

这里也顺便提下如何 UISearchController 将取消按键的 “cancel” 改为中方的,网上应该有各种各样的通过subview来遍历出来取消的 button,然后再去设置title,其实如果你项目是中文的,就在info.plist里把语言(Localization native development region)设置为 China 就可以了,cancel 会自动转换成中文的取消。

关于最近

最近好久没有更新文章了,其实最近很忙,不单是工作上的,还有生活上的,母亲住院动手术了,回去老家照看,随着年龄的增长,觉得自己的责任越来越大了,慢慢觉得最害怕的一句话是:“树欲静,而风不止;子欲养,而亲不待”,只想好好珍惜当下,多陪下家人,也许只是简单的一通电话,几个小时的车程,一个周末的时间,多聊聊,多回去看下,这是家人最大的愿望了。这次回家,父亲对我说:“爸妈老了,不像年轻时了,生病的时候也希望子女能陪在身份”,那时心里真的很酸,这话是从父亲口中说出来的,真的很愧疚,回首看下,原来父母真的老了,希望我们都能多陪伴下自己的父母吧。

最近同时也写了一个 RSS 的订阅器:趣阅, 你可以在 App Store 上下载体验,这个工具主要是方便自己的使用,平常时坐公车、地铁时,只可以利用碎片时间来读读好的文章,充实下自己。目前已经更新两个版本,昨晚上提交了第三个版本,应该明天就可以审核过了,有兴趣的可以看下,如果希望一同开发的,也可以私聊我。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容