ho avuto il debugger vista lavorare di nuovo ponendo la seguente correzione nel mio progetto:
#ifdef DEBUG
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
@implementation UIView (FixViewDebugging)
+ (void)load
{
Method original = class_getInstanceMethod(self, @selector(viewForBaselineLayout));
class_addMethod(self, @selector(viewForFirstBaselineLayout), method_getImplementation(original), method_getTypeEncoding(original));
class_addMethod(self, @selector(viewForLastBaselineLayout), method_getImplementation(original), method_getTypeEncoding(original));
}
@end
#endif
Quando i carichi di progetto, il metodo load
eseguirà, causando viewForFirstBaselineLayout
e viewForLastBaselineLayout
utilizzare l'implementazione viewForBaselineLayout
se sono non attualmente implementato, quindi visualizzare il debug fa apparire iOS8 il comportamento che stava cercando.
Per aggiungere questo al proprio progetto, creare un nuovo file Objective-C vuoto nel progetto e incollare il contenuto. È possibile denominarlo come si desidera. Io chiamo il mio "UIView + FixViewDebugging". Se ti trovi in un progetto di Swift puro, non è necessario che crei un'intestazione di bridging. Il file verrà compilato nel progetto e non è necessario farvi riferimento.
Nota questo funziona solo per le build di debug a causa dello #ifdef DEBUG
. Puoi rimuoverlo ma potresti accidentalmente compilarlo nei tuoi build di rilascio (anche se non dovrebbe avere effetti collaterali negativi). Se questo metodo non funziona con queste linee, controlla che il tuo target abbia DEBUG=1
in Impostazioni build> Apple LLVM - Preelaborazione> Macro preprocessore> Debug.
fonte
2016-04-28 22:34:03
che tipo di operazione fai con 'UIWindow', comunque? – holex
Nessun accordo. L'interfaccia utente non riesce a funzionare da solo. – orkenstein
Sto affrontando lo stesso problema ora, alla ricerca di soluzioni – Jagie