Isu*_*uru 4 uisearchbar ios swift ios8 uisearchcontroller
我正在尝试UISearchControlleriOS 8中引入的新API.尽管API是新的,但它使用的是相同的旧API UISearchBar.我把它添加到UINavigationController的titleView.

import UIKit
class ViewController: UIViewController, UISearchBarDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
navigationItem.titleView = searchController.searchBar
}
}
Run Code Online (Sandbox Code Playgroud)
我不需要搜索栏来获取导航栏的整个宽度.问题是我无法调整它的大小.首先,我尝试设置搜索栏的框架.
searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 100, height: 44)
Run Code Online (Sandbox Code Playgroud)
这没用,所以我试着设置titleView框架.
navigationItem.titleView!.frame = CGRect(x: 0, y: 0, width: 100, height: 44)
Run Code Online (Sandbox Code Playgroud)
它们都不起作用.
有谁知道另一种方法吗?
谢谢.
Tis*_*ish 14
您可以使用另一个视图作为导航栏标题并在其中放置搜索栏.如果出现条纹色彩问题,可以通过设置backgroundImage属性来解决.这应该工作:
let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
let frame = CGRect(x: 0, y: 0, width: 100, height: 44)
let titleView = UIView(frame: frame)
searchController.searchBar.backgroundImage = UIImage()
searchController.searchBar.frame = frame
titleView.addSubview(searchController.searchBar)
navigationItem.titleView = titleView
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6163 次 |
| 最近记录: |