2010-01-27 12 views
5

Mam , który jest zainicjalizowany z poprawną ramką, jednak gdzieś w moim kodzie klatka zostaje zmanipulowana i mam problem ze znalezieniem gdzie.Jak wykryć, kiedy zmieniono rozmiar UIView?

W takich sytuacjach zwykle jest przydatna do watch zmienna w debugerze, jednak nie mam dostępu do właściwości kontrolera-> view-> frame w moim widoku zmiennych, ponieważ nie jest zmienną, to jest właściwość (o dziwo)

Wiercenie w UIView na wyświetlaczu zmiennych pokazuje kilka rzeczy, ale nic nie mogę odnieść do ramki, myślałem, że może to być w layer, ale tak nie jest.

Czy jest jakiś sposób na oglądanie zmian w prywatnym interfejsie API? Chyba nie, ponieważ zmienne są w zasadzie "ukryte", więc nie można dokładnie określić, co do watch.

Alternatywnie, z jakiej innej metody mogę skorzystać? Próbowałem już podklasy UIView, ustawiając widok UIViewController, aby wskazał tę podklasę i złamał metodę setFrame, ale nie działało.

EDYCJA: metoda DID klasy podklasy UIView, musiałem ustawić widok tak, aby wskazywał na moją podklasę testową w viewDidLoad, a nie na metodę init. Pozostawiając to pytanie otwarte, ponieważ nie jestem pewien, czy jest to najlepszy sposób podejścia do tego rodzaju problemu ...

Odpowiedz

0

Można utworzyć ivar, view2 i po prostu przypisano go do widoku w metodzie loadView. To powinno umożliwić oglądanie go jak normalnej zmiennej.

5

Podklasa swój pogląd chcesz śledzić i przepisać metodę setFrame:

@implementation MyTableView 

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

@end 

następnie użyć debuggera aby dodać punkt przerwania go i sprawdzić, kiedy to zostanie wywołany. W końcu zobaczysz, kiedy ramka zostanie zmieniona i skąd pochodzi ta zmiana.

+0

tak ja to już wspomniano w pytaniu ... – Sam

+0

Sam, to powinno działać. Jeśli ramka zostanie zmieniona, należy wywołać tę metodę. Jeśli nie, może problem leży gdzieś indziej. –

+6

Może nie zostać wywołana podczas używania ograniczeń automatycznego układu. – kpozin

Powiązane problemy