2017-02-24 31 views
5

NavigationBar içinde titleView ve backButton arasında bir boşluk var çünkü orada oGezinme çubuğunda title title boyutunu değiştirme. Benim navigation.titleView bir arama çubuğu ekledik

self.navigationItem.backBarButtonItem?.title = "" 

Ama "" = ayrıca başlığı ile bir BackBarButtonItem

self.navigationItem.titleView = searchBar 

var

'Bu gibi Back Button ve SearchBar arasındaki boşluğu yeniden: There're gap between Back Button and SearchBar

uzayiçin var, çünkü boşluk burada göründüğünü düşünün (title benim null olduğum için "ama boşluk hala orada)

Bu açığı nasıl çıkaracağımı sormak istiyorum? searchBar benim backBarIcon

numaranı yaklaştırmak istiyorum.

DÜZENLEME 1: Ben Searchbar en çerçevesini değiştirmeye çalışıyorum ama

Bu

çalışmıyor verilen varsayılan bir boşluk olduğundan, bu benim kod Sen yapamaz

//Change searchBar's frame   
    let titleViewFrame = (searchController.searchBar.frame) 
    searchController.searchBar.frame = CGRect(x: titleViewFrame.minX - 20.0, y: titleViewFrame.minY, width: titleViewFrame.width + 20.0, height: titleViewFrame.height) 
+0

onun 'frame' ayarlayarak daha geniş arama çubuğu oluşturmayı deneyin olduğunu. –

+0

BT yaptım, ancak hala çalışmıyor –

+0

Bir Bakış @Peter Chang'ın çözümüne göz atın, bunu AutoLayout ile yapın. –

cevap

5
override func viewDidLoad() { 
    super.viewDidLoad() 

    let container = UIView(frame: CGRect(x: 0, y: 0, width: 1000, height: 22)) 

    let searchBar = UISearchBar() 
    searchBar.translatesAutoresizingMaskIntoConstraints = false 
    container.addSubview(searchBar) 

    let leftButtonWidth: CGFloat = 35 // left padding 
    let rightButtonWidth: CGFloat = 75 // right padding 
    let width = view.frame.width - leftButtonWidth - rightButtonWidth 
    let offset = (rightButtonWidth - leftButtonWidth)/2 

    NSLayoutConstraint.activate([ 
     searchBar.topAnchor.constraint(equalTo: container.topAnchor), 
     searchBar.bottomAnchor.constraint(equalTo: container.bottomAnchor), 
     searchBar.centerXAnchor.constraint(equalTo: container.centerXAnchor, constant: -offset), 
     searchBar.widthAnchor.constraint(equalToConstant: width) 
    ]) 


    self.navigationItem.titleView = container 
} 

enter image description here

+1

neden arama metnini tıklayamıyorum, onu engelleyen bir kapsayıcı var gibi görünüyor. –

+0

Bu, çalıştırıldığında iyi görünüyor ancak girişe yanıt vermiyor. Ayrıca, sol tarafa dokunursanız, arka tuşun seçilmiş gibi davrandığını fark ettiniz. Orası bile değil gibi. –

+0

@JeffMuir Varsayılan olarak geri düğme çerçeve boyutu, göründüğünden daha büyük olduğundan, bu sorunu önlemek için sistem sol yerine kendi sol çubuk düğmenizi kullanabilirsiniz –

0

olan biz değişiklik yapamaz eğer geri düğmesi varsa.

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) 
     self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "back") 

    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "back") 

    self.navigationController?.navigationBar.tintColor = UIColor.lightGray 

aşağıdaki ekran görüntüsünde enter image description here