2010-01-27 14 views
5

UIViewController, doğru bir çerçeve ile başlatılmış, ancak kodumda bir yerde çerçeve karışıyor ve nerede olduğunu bulmakta güçlük çekiyorum.UIView'nin boyutu ne zaman değişti?

Böyle durumlarda, hata ayıklayıcısında bir değişken watch için kullanışlıdır, ancak değişken görünümde denetleyici-> görünüm-> çerçeve özelliğine erişme imkanım yoktur, çünkü bu bir değişken değildir. özellik (şaşırtıcı derecede yeterli)

Değişkenler ekranındaki UIView içine sondaj yapılması, çerçeveyle ilişkilendirilebilecek hiçbir şey göstermez, belki de bu, layer içinde olacağını düşündüm ama değil.

Özel bir API'daki değişiklikleri izlemenin bir yolu var mı? Sanırım, değişkenler aslında 'gizli' olduğundan ve tam olarak ne watch olduğunu belirleyemezsiniz.

Alternatif olarak, başka hangi yaklaşımı kullanabilirim? UIView alt sınıfını kullanmayı denedim, UIViewController'ın bu alt sınıfı gösterme ve setFrame yöntemini kırma konusundaki görüşünü belirledim ama işe yaramadı.

DÜZENLEME: sınıflara UIView yöntem işe DID, ben sadece benim test viewDidLoad yılında alt sınıf değil init yönteme işaret edecek görünümünü ayarlamak zorunda kaldı. Bu sorunun, bu tür bir soruna yaklaşmanın en iyi yolu olup olmadığından emin olmadığından emin değilim ...

cevap

0

Bir ivar, view2 oluşturabilir ve yalnızca loadView yönteminizde kendi görünümünüze atayabilirsiniz. Bu normal bir değişken gibi izlemenizi sağlar.

5

Alt Sınıf senin izleyip setFrame yöntemini yeniden yazmak istiyorum görünüm:

@implementation MyTableView 

- (void)setFrame:(CGRect)frame; 
{ 
    NSLog(@"%@", frame); 
    [super setFrame:frame]; 
} 

@end 

Sonra buna bir kesme noktası ekleyebilir ve çağrılan zaman kontrol etmek ayıklayıcısını kullanın. Sonunda, çerçevenin ne zaman değiştiğini ve değişimin nereden geldiğini göreceksiniz.

+0

evet ben zaten söz konusu bu sözü ... – Sam

+0

Sam, çalışması gerekir. Çerçeve değiştirilirse bu yöntem çağrılmalıdır. Eğer sorun değilse, belki de başka bir yerde sorun var. –

+6

Otomatik düzen kısıtlamaları kullanıldığında bu çağrılmayabilir. – kpozin