Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

NavigationBar Bar Itemlerin pozisyonu kayıyor.

0 oy
76 kez görüntülendi
30, Ekim, 2017 ios development kategorisinde huseyinvural tarafından soruldu

Merhaba,

Garip bir problemim var çok uğraştım çözemedim. Objective c ile yazılmış oldukça kötü :( bir kod devraladım.

Navbarın left ve right itemlerinde ikişer adet button itemi var normalde sorun yok ama olurda push ile başka bir vc ye gidersek ve ordan geri gelirsek, yani didApper çağrılırsa, navbar itemlerin pozisyonları 20 point yukarı kayıyor.

Kontrol ettiğimde birşekilde didApper olduğunda navbarın height ölçüsünün bazen 44 bazen 64 olduğunu görüyorum.

Bu soruna ne sebep olabilir saçımı başımı yoldurdu. Her tarafa baktım ilgili itemleri set eden herhangi bir method da mevcut değil.

Teşekkürler.

1 cevap

0 oy
31, Ekim, 2017 yasin tarafından cevaplandı

dikeyde 20 pixel kayıyorsa, bunun status bar ile ilgili bir problem olduğunu rahatlıkla söyleyebilirim.
sanırım status bar uygulama da gösterilmiyor ama navigasyon esnasında yeniden beliriyor.
her viewController'a prefersStatusBarHidden'i true değeriyle bir ekle bakalım, bir etkisi olacak mı.

- (BOOL)prefersStatusBarHidden {
    return YES;
}
31, Ekim, 2017 huseyinvural tarafından yorumlandı

Maalesef , navbar içindeki tüm itemleri etkiliyor bu sorun. Ama temelde leftitem icinde bir search bar set ediyorum.

View controller üstüne bir modal gelirse, modalı kapatığımda navbar içindeki left ve right itemlerin poziyonları kaymış oluyor.

Örneğin left iteme bir button eklersem, insetlerini 0 verirsem en üste dayamış oluyor dikeyde kötü bir görüntü. Ortalamak için butonun inset değerlerini değiştiriyorum, diğer dikey ortalma yönetmlerini de denedim.

Viewcontroller ilk açıldığında sorun olmuyor bu şekilde düzgün, fakat bir şekilde didApper olursa butonlar 20 point aşağı kaymış oluyor. Tam push aşamasında kayma işleminin gerçekleştiğini görebiliyorum.

Kodu ilk yazan kişi navbar içindeki item viewn y pozition değerini her ihtimal için cover etmeye çalışmış ama işe yarar ve mantklı bir çözüm değil.

Akış ilk oluşturulurken stryboard bir VC içinden başlıyor ve bu VC içinde bir Navigation contorller böyle bir kullanımdan dolayı mı bu sorun olmuş olabilir onu anlamaya çalışıyorum.

Çok garip bir problem, saçma ama çok vaktimi aldı.

31, Ekim, 2017 yasin tarafından yorumlandı

bu problem kesinlikle status bar kaynaklı. Buna eminim.
info plist içerisine "View controller-based status bar appearance" key'ini ekleyip değerini NO olarak set edermisin.

31, Ekim, 2017 yasin tarafından yorumlandı

ha bir de, eğer uygulamada bir sorun yaratmazsa, viewDidAppear yerine viewWillAppear metodunu kullanmayı dene.

31, Ekim, 2017 huseyinvural tarafından yorumlandı

View controller-based status bar appearance NO kontrol etmiştim.

prefersStatusBarHidden Kısmen işime yarasada serachbarda sorunum devam ediyor.

Arama ikonuna tıkladığımda left iteme searchbar set ediyorum, ama bir modaldan geri geldiğim anda searchbar yukarı kaymış oluyor. Aynı şekilde searchbarı açtıktan sonra search barın olduğu yere eski itemleri eklesem, itemler yukarı kaymış oluyor.

Çözene kadar tüm tuşlara basıcam :))

Çok teşekkürler.

31, Ekim, 2017 huseyinvural tarafından yorumlandı

Şimdi dikkat ettim bu hata başka bir projemde daha var, navigation bar itemine bir serachbar set ediyorum. Mevcut view controller üzerine bir modal gelirse navigation barın yüksekliği 10-20 pt gibi artıyor.

Buda naviagtionbar içine önceden yerleştiridğim itemlerin düzeninin bozulmasına neden oluyor. Navgiationbar yüksekliği nasıl değişken olabilir anlayamıyorum.

2, Kasım, 2017 burhanaksendir tarafından yorumlandı

Şöyle bir kullanımla benzer bir sorunu çözmüştüm:

if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
// Fallback on earlier versions
navigationItem.titleView = searchController?.searchBar
}

Yine benzer bir sorunda kayma durumunu
engellemek için şunu yaptım:

if #available(iOS 11.0, *) {
searchBar.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
}

...