2015-01-29 41 views
8

Şu anda iOS7 aygıtlarını etkileyen gibi görünüyor bir sorun yaşıyoruz.iOS - viewDidLayoutOn otomatik düzenleme yapmadan önce çağrılar iOS7 üzerinde tamamlandı

.xib dosyasımızda, ekranda dairesel olması gereken bir kap görünümünde (yani, görünüm hiyerarşisinin en üst düzeyinde değil) iki görünüm vardır. Görünümler, kapsayıcıdaki konumlarına ve yatay aralıklarına uygulanan kısıtlamalara ve kare gerektiren bir en boy oranı koşuluna sahiptir. Görüşler, açıklanan kısıtlamalara uyarak geniş ekran boyutlarında genişlik/yükseklik genişlemelidir. Bizim VC

, biz dairesel görünmesini bu görüşleri zorlamak için viewDidLayoutSubviews aşağıdaki adres:

- (void)viewDidLayoutSubviews { 
    self.progressContentContainerView.layer.cornerRadius = self.progressContentContainerView.frame.size.width/2; 
} 

Bu iOS8 üzerinde iyi çalışıyor görünüyor, görünüm görüntülendikten sonra ancak -iOS7 bir süresi vardır kısıtlamaların henüz uygulanmadığı ve görünüm/görüntülerin boyutu yanlış olduğunda (ekli ekran görüntülerine bakın). Bu, kendini çözer ve yarım saniye sonra bir daire doğru bir şekilde oluşturur. Bu, yalnızca dairesel olma niyetinde olduğumuz görüşlerin, VC'nin görüş hiyerarşisinin en üst seviyesinde DEĞİLDİR. Bu durum, alt raporların alt görüntülerinin de yayınlanmasından önce viewDidLayoutSubviews'un çağrıldığını ima ediyor gibi görünüyor.

Circle with incorrect cornerRadius Circle properly rendered after half a second

Benim tahminim

potansiyel olarak CornerRadius ayar yapmak için buraya viewDidLayoutSubviews bu alt sınıf içinde dairesel görünüme referanslar ekleyerek ve ağır basan, iç içe kap için UIView sınıflara bu sorunu düzeltmek olmasıdır. Bu biraz bir çözüm gibi görünüyor ve başka seçenekler olup olmadığını görmek istiyorum.

Bu soruna daha temiz/daha idiomatik bir çözüm var mı?

+0

Ben Sadece hayatta yıllık Ocak aktivitesini tutmak için benzer bir sorunu – d0n13

cevap

1

Bu eski bir soru olduğunu biliyorum ama aradığınız ya denedi:

[self.progressContentContainerView setNeedsUpdateConstraints]; 

ya:

[self.progressContentContainerView layoutIfNeeded]; 
+0

yaşıyorum - 'layoutIfNeeded' aradığım şeydi. –

İlgili konular