UISearchBar使用技巧

作者: luozhiwei | 来源:发表于2016-07-06 22:12 被阅读467次

    UISearchBar类结构

    apple的UISearchBar的构成基本如上图所示。可以很清楚地看出主要是由两个部分组成,UISearchBarTextField与UISearchBarBackground两个部分组成,而UISearchBar提供的修改的属性和接口挺有限的,因此可以根据上图的结构遍历或者KVC得到子视图来进行一定程度的定制。

    把边框线移除与设置背景颜色

    UISearchBarBackground是用于设置背景效果的,但它也会带来边框线的效果,若要移动UISearchBar的边框线,就可以removeFromSuperView将UISearchBarBackground移除掉来实现。

    在UISearchBarBackground被移除后,这是UISearchBar的background color才能完全显示出来。

    输入栏的背景颜色设置

    若想通过UISearchBar的属性直接设置输入栏的背景颜色同样是不行,apple只提供了两种默认的风格给你,白和黑,若想自己设置输入栏的颜色,同样的原理,也是需要同过遍历子View或KVC获取到UISearchBarTextField,到这里,其实大家也知道UISearchBar实际上就是其他的一些基础图形控件所拼凑成了,所以你要修改输入栏的背景颜色,那实际上就是修改UISearchBarTextField的background color。

    三个附加button

    UISearchBar有三个附加的button,分别是CancelButton、SearchResultsButton、BookmarkButton,这三个button其实又分别对应着三个Delegate回调,可以给我们定制点击后的事件。

    cancelBtn

    其中cancelButton是用于取消当前的搜索所用的,但有一点不好的就是,它会默认显示为cancel,并且不会根据当前系统的语言环境切换,所以得自己处理,同样的,因为UISearchBar并没有提供直接的属性去访问这个cancelButton,所以也得通过遍历或者KVC的方式获取并修改。实现代码如下:

    其中需要注意的是,setShowCancelButton这个方法必须在遍历前调用,只有调用了这句话,UISearchBar才会往里面添加一个cancelBtn的控件,所以不预先调用的话,就无法遍历得到cancelBtn。

    SearchResultsButton & BookmarkButton

    由对象的结构图,可以看出这两个button实际上就是同一个button下的两种风格,并对应着不同的delegate回调时间,所以它们两个只能同时出现一个。

    实现效果与对应的初始化代码

    相关文章

      网友评论

        本文标题:UISearchBar使用技巧

        本文链接:https://www.haomeiwen.com/subject/jvikjttx.html