2012-12-19 20 views
5

Olası Çoğalt:
UIViewController returns invalid frame?Farklı Subview düzenleri

i viewDidLoad benim bakış çerçevesini çağrı fark ettik ayıklama yaparken doğru değildir origin=(x=0, y=20) size=(width=320, height=460) olduğunu. viewWillAppear numaralı çağrıda, doğru ayarlanmış: navigasyon çubuğu yüksekliği dikkate alınarak origin=(x=0, y=0) size=(width=320, height=416). Alt görünümler düzenim kök görünümüne bağlı, ancak her zaman görünümü görünecek şekilde onları kurmak istemiyorum.

Bu iki çağrıyı nasıl ele almalıyız?

+0

Onlarla tam olarak olduğu gibi ilgilen. -viewWillAppear'da görünüm ayarlarını yapın, çünkü nav çubuğu yüksekliğini hesaba katacaktır, sonra -viewDidLoad içinde başlatma işlemini gerçekleştirin. – CodaFi

cevap

6

Görünüm düzeniyle başa çıkmak için uygun yer UIViewController viewWillLayoutSubviews yöntemindedir. Bu, görünüm denetleyicinin görünümü ilk gösterildiğinde ve döndürüldüğünde olduğu gibi boyutlandırıldığında çağrılır.

Gördüğünüz gibi, görüntü denetleyicinin görünümü viewDidLoad çağrıldığında henüz tam boyutlandırılmadı.

iOS 4.3'ü desteklemeniz gerekiyorsa, 5.0'a eklendiğinden beri viewWillLayoutSubviews'u kullanamazsınız. Bu durumda, düzeni viewWillAppear:'da yapın.

+0

İzleme çerçevesi ayarlanmadan ve pencere kendini yönlendirmeyi bitirmeden önce -viewWillAppear MAYIS çağrılabilir. IOS 4'te buna ihtiyacınız varsa -viewDidAppear'ın çağrılması için beklemeniz gerekir. –

İlgili konular