第一种设置方法
navigationItem.titleView = UISearchBar(frame:CGRect(x:0,y:0,width:180,height:30))
该设置搜索框方法有两个缺点,第一个缺点导致搜索框的frame不可控,随着titleview的frame变化,第二个缺点是有可能导致titleview在设置搜索框后,整个navigationBar的高度会向下延伸,导致显示的高度大于实际的高度(44),造成对下面内容的遮挡。
解决方案,把 searchBar 装在view中,把view设置成navigationItem.titleView
let searchBar : UISearchBar = UISearchBar(frame:CGRect(x:0,y:0,width:180,height:30))
let titleView : UIView = UIView(frame:CGRect(x:0,y:0,width:180,height:30))
navigationItem.titleView = titleView.addsubView(searchBar)