zoukankan      html  css  js  c++  java
  • iOS 将navigationItem.titleView设置为自定义UISearchBar (Ficow实例讲解)

    这篇文章可以解决以下问题:

    1.将searchBar设置为titleView后,无法调整位置的问题 ;

    2.searchBar的背景色无法设置为透明色的问题;

    3.searchBar输入框内用户输入的字体的颜色无法设置为其他颜色的问题;

    首先看一下完成后的效果吧!

    背景透明位置偏左实际输入的字为深灰色

    OK,开始动手做!

    以下示例代码的语言是Swift 3

    首先设置searchBar的配色

    searchView = UISearchBar.init(frame: .zero)
    searchView.alpha = 0.7
    searchView.tintColor = UIColor.lightGray  // 光标颜色
    searchView.backgroundColor = UIColor.clear  // 背景色
    searchView.placeholder = "搜索你感兴趣的问题"
    searchView.delegate = self
    
    for subView in self.searchView.subviews{
        for sSubView in subView.subviews{
            // 移除背景,防止出现黑线
            if sSubView.isKind(of: NSClassFromString("UISearchBarBackground")!){
                sSubView.removeFromSuperview()
            }
            // 设置字体颜色
            if sSubView.isKind(of: UITextField.self){
                let tf = sSubView as! UITextField
                tf.textColor = UIColor.darkGray
            }
        }
    }

    然后设置searchBar的位置

    // 使用一个View来包裹searchBar,即可实现searchBar位置偏移
    // 否则只能固定在导航栏的中间,而且可能会出现闪烁问题
    let frame = CGRect.init(x: 0, y: 0,  SCREEN_WIDTH - 120, height: 36)
    let containerView = UIView.init(frame: frame)
    containerView.addSubview(self.searchView)
    self.navigationItem.titleView = containerView
    self.searchView.frame = CGRect.init(x: -15, y: 0,  SCREEN_WIDTH - 120, height: 36)

    可以看到下图中红色的就是这个containerView了,

    想要改变搜索框的位置,就需要设置搜索框的frame

    建议:

    在自定义控件的时候,

    推荐你把各个部分设置成易区分的颜色

    这样可以很方便观察控件的大小、位置等等。

    另外我这个应用兼容的最低版本是iOS8的,

    所以没有使用iOS9之后才支持的appearanceWhenContainedIn方法。

    参考资料:

    https://stackoverflow.com/questions/10718931/change-text-color-of-search-bar-ios

    http://www.gowhich.com/blog/149

    http://blog.csdn.net/peanut_/article/details/23562753


    Ficow原创,转载请注明出处:http://www.cnblogs.com/ficow/p/7256545.html

  • 相关阅读:
    struts2.1.6存在中文乱码的bug
    记Spring下autowire为name时的一个现象
    AOP注解不起作用的debug结果
    占位
    占位
    Hibernate学习小结
    Struts2学习笔记
    金尚网上商城项目第一章小结
    JavaWeb 学习的第一阶段总结
    大话设计模式 笔记——策略模式
  • 原文地址:https://www.cnblogs.com/ficow/p/7256545.html
Copyright © 2011-2022 走看看