Với iOS 11 Apple đã thiết kế lại UISearchBar bằng cách làm cho các góc tròn hơn và chiều cao lớn hơn. Thêm một UISearchBar vào navigationBar khá đơn giản bằng cách chỉ cần đặt nó là titleView của navigationItem sử dụng navigationItem.titleView = searchBar
.iOS 11 SearchBar trong NavigationBar
Tuy nhiên, trong iOS 11 nó dường như không hoạt động như mong đợi. Hãy nhìn vào màn hình mà chúng ta so sánh các thiết lập tương tự sử dụng iOS 10 và iOS 11
Bạn có thể thấy rõ rằng thanh tìm kiếm tăng kích thước của NavigationBar nhưng các nút trên thanh không được căn chỉnh chính xác. Ngoài ra thanh tìm kiếm không sử dụng không gian còn trống ở bên trái nữa.
Đặt thanh tìm kiếm vào chế độ xem trình bao bọc để nhận nút hủy trên iPad như được mô tả ở đây Cancel button is not shown in UISearchBar cũng không hoạt động nữa vì thanh tìm kiếm sẽ không hiển thị.
Nếu có ai có vấn đề tương tự hoặc đã biết cách sửa chữa/cải thiện điều này, tôi sẽ rất biết ơn.
Điều này được xây dựng bằng cách sử dụng Xcode 9 Beta 4. Có thể các bản phát hành trong tương lai sẽ khắc phục sự cố này.
UPDATE:
Vì đây không được cố định, chúng tôi quyết định sử dụng sau đây giải pháp. Chúng tôi đã thêm một UIBarButtonItem mới vào NavBar và khi nó được nhấn, chúng tôi sẽ trình bày một ViewController mới, nơi chúng tôi chỉ đặt một thanh tìm kiếm và không có gì khác vào thanh điều hướng có vẻ tốt. Sử dụng câu trả lời đã chọn có thể là giải pháp tốt nhất vì Apple với iOS 11 muốn chúng tôi sử dụng thiết kế mới này ngay cả khi nó không cung cấp cho chúng tôi kết quả mà chúng tôi mong muốn ban đầu. Một cách khác để giải quyết vấn đề này có thể là một SearchBar tùy chỉnh nhưng đây là một chủ đề khác.
câu trả lời của tôi là tương tự như câu trả lời @cook, nhưng tôi nghĩ rằng liên kết và mã có thể giúp làm rõ một chút. –
Điều này sẽ không cho kết quả như được mô tả ban đầu. Sử dụng thuộc tính searchController sẽ đặt thanh tìm kiếm bên dưới điều hướng. – Molanda
Tính năng này hoạt động trên iPhone nhưng không hoạt động trên iPad cho tôi. – Starchand