Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
882 kez görüntülendi
ios development kategorisinde tarafından

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
tarafından

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;
}
tarafından

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ı.

tarafından

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.

tarafından

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

tarafından

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.

tarafından

Ş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.

tarafından

Şö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
}

...