iOS13 修改UISearchBar边框圆角失效

项目要求搜索栏有自定义边框颜色、背景色和圆角。

iOS 13 以前

取出searchBar的私有子view _UISearchBarSearchFieldBackgroundView,直接修改 borderWidth, cornerRadius修改即可。

iOS 13 以后失效

打印视图层级
可看到_UISearchBarSearchFieldBackgroundView 仍然存在,但修改失效。

Debug View Hierarchy 查看视图层级

可发现多了个UISearchTextField,且作为searchBar的属性可直接访问,这一点在 WWDC19演讲 - Modernizing Your UI for iOS 13 23分有提到

官网的搜索十分好用,展示了关键词在演讲视频的位置、可以直接跳转,且有中文字幕。
  • 关于searchBar的很多设置均可直接操作searchTextField,不用再hook或者KVC了,很多KVC在iOS 13都会崩溃。

顺便一提这部演讲介绍了iOS 13很多UI亮点功能,系统级别的新手势:双指下滑即多选,三指pinch即复制;搜索关键词UISearchTokenSheet下滑dismiss时更人性化的交互等等。有机会我再研究学习写篇文章。

话说回来,取到searchBar.searchTextField进行修改,边框生效,圆角却失效了

默认圆角比边框圆角大

这是由于searchTextField.borderStyle默认为UITextBorderStyleRoundedRect,自带圆角。修改为UITextBorderStyleNone,运行,OK~

其他参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。