Wie zu erkennen, wenn ein UIView Größe verändert hat?
-
23-09-2019 - |
Frage
Ich habe eine UIViewController
, die mit einem korrekten Rahmen, aber irgendwo in meinem Code initialisiert wird der Rahmen verstümmelt wird und ich habe Schwierigkeiten, herauszufinden, wo.
In Situationen wie dieser ist es in der Regel praktisch eine Variable im Debugger watch
jedoch habe ich keine Möglichkeit, die für den Zugriff auf Controller-> view-> Frame-Eigenschaft in meiner variable Ansicht, da es sich nicht um eine Variable ist, es ist ein Eigenschaft (überraschenderweise)
Bohren in die UIView in der Variablen-Anzeige zeigt ein paar Dinge, aber nichts, was ich auf den Rahmen beziehen kann, dachte ich vielleicht, dass in layer
sein würde, aber es ist nicht.
Gibt es eine Möglichkeit für Änderungen in einem privaten API zu sehen? Ich denke nicht, da die Variablen im Wesentlichen ‚versteckt‘ sind und so kann man nicht genau, was zu watch
angeben kann.
Alternativ was anderer Ansatz könnte ich verwenden? Ich habe bereits versucht, UIView Subklassen, meine UIViewController Ansicht Punkt zu dieser Unterklasse einstellen und auf dem SetFrame Verfahren zu brechen, aber es schien nicht zu arbeiten.
EDIT: der Subklassen UIView Methode funktioniert, habe ich nur den Blick auf Punkt auf meine Testunterklasse in viewDidLoad
zu setzen und nicht die init
Methode. Verlassen diese Frage offen, wie ich bin nicht sicher, ob dies der beste Weg, diese Art von Problem zu nähern ...
Lösung 2
Ich entdeckte dieser Schlüsselwert Beobachter gemacht werden können.
Andere Tipps
Subclass Sie die Ansicht, die Sie wollen die SetFrame Methode zu verfolgen und zu umschreiben:
@implementation MyTableView
- (void)setFrame:(CGRect)frame;
{
NSLog(@"%@", frame);
[super setFrame:frame];
}
@end
Verwenden Sie dann den Debugger einen Haltepunkt, um es hinzuzufügen und zu überprüfen, wenn es aufgerufen wird. Schließlich werden Sie sehen, wenn der Rahmen geändert wird und wo die Änderung kommt.
Sie könnten eine Ivar, view2 erstellen und nur zu Ihrer Ansicht in Ihrer loadView
Methode zugewiesen es. Das sollten Sie ermöglicht es wie eine normale Variable zu beobachten.