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

Merhaba;
Hocam yaptığım app ta uygulamam yatayken ve dikeyken çok güzel şekilde çalışıyor. Fakat sadece ipad kullanırken (mini elimdeki) sır üstü ipad'i bıraktığımda dikey kodu yatay olarak çalıştırıyor. Örneğin ben bazı alanları yataydayken gizliyorum fakat sırt üstü koyduğumda alanlar aktifleşiyor. Arka plan siyah ken beyaz yapıyor. Ama bunu normal portrait olarak anlamıyor cihaz, sanki cihazın yatay durumu portraitmiş gibi yapıyor kısır bir döngü var sebebi nedir acaba ?
Dikey;
Dikey Durum

Yatay;
Yatay Durum

Yatayken- Dikey sanıp yataylaştırarak çalıştıran sırt üstü durum

Dikey sanıp yataylaştırarak çalıştıran sırt üstü durum

1 cevap

0 oy
tarafından

Keşke bu işlemleri nasıl yaptığına dair bir kod paylaşsaydın.
Neyse o zaman ne yapmış olabileceğine dair bir çıkarımda bulunacağım.
Umarım tutturabilirim. :)

Sanırım autolayout kullanmadan cihaz oryantasyonuna bakarak bu düzenlemeleri yapıyorsun. Cihaz oryantasyonu sadece portrait ve landscape modları değil aynı zamanda cihazın sırtüstü veya yüzüstü durumlarına göre de farklı değerler üretir.

sanırım şunu yapıyorsun;

 if UIDevice.current.orientation.isLandsape {

 } else {

 }

eğer yukarıdaki gibi kullanıyorsan, if clause'ının else bloğu landscape dışındaki herhangi bir değerde tetiklenebilecek demektir, yani eğer koşullar aşağıdaki gibi olursa yine de senin portrait görünümü düzenleyen kodların çalışacağı sonucu çıkar.

UIDevice.current.orientation == .faceUp 
UIDevice.current.orientation == .faceDown
UIDevice.current.orientation == .portrait
UIDevice.current.orientation == .portraitUpsideDown

bu durumda if else ile ayıca portrait durumunu da ayırman gerekecek demektir.

 if UIDevice.current.orientation.isLandscape {

 } else if UIDevice.current.orientation.isPortrait {

 } else {

 }

ayrıca tüm bunlardan bağımsız cihaz oryantasyonu yerine statusBar oryantasyonunu kullanmanı öneririm.

UIApplication.shared.statusBarOrientation

statusbar oryantasyonu sadece interface'in durumunu denetler ve sadece landscape veya portrait değerler alabilir.
Device oryantasyonunu interface oryantasyonunu belirlemek için kullanmak tavsiye edilmez.

...