Oto przydatny trik można zrobić, aby pomóc w autoLayout debugowania. Możesz dodać własną właściwość name
do kategorii UIView
za pośrednictwem kategorii i przeciążyć jej metodę description
, aby dołączyć nową name
. To nie do końca daje widoczną nazwę w autoLayout informacji debugowania, ale pozwala łatwo po
widok z jego adresem i zobaczyć jego Imię.
Następnie wystarczy przypisać odpowiednie nazwy w kontrolerze widoku:
- (void)viewDidLoad {
[super viewDidLoad];
self.firstView.name = @"MyViewController.firstView";
self.secondView.name = @"MyViewController.secondView";
}
Teraz, gdy widzisz coś takiego:
<NSAutoresizingMaskLayoutConstraint:0x175086220 h=-&- v=-&- UIView:0x147533250.height == UIView:0x14760b4a0.height>
można po prostu po
adresy Widok:
po 0x147533250
MyViewController.firstView <UIView: 0x147533250>
po 0x14760b4a0
MyViewController.secondView <UIView: 0x14760b4a0>
Oto kod kategoria:
UIView + Name.h
#import <UIKit/UIKit.h>
@interface UIView (Name)
@property (strong, nonatomic) NSString *name;
- (NSString *)description;
@end
UIView + Name.m
#import "UIView+Name.h"
#import <objc/runtime.h>
@implementation UIView (Name)
- (NSString *)name {
return objc_getAssociatedObject(self, @selector(name));
}
- (void)setName:(NSString *)name {
objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSString *)description {
return [NSString stringWithFormat:@"%@ %@", self.name, [super description]];
}
@end
zobaczyć tutaj http: // stackoverflow. com/questions/8295471/storyboard-nie zawiera kontrolera-z-identyfikatorem –
@Oleg to działa tylko dla ViewController. OP pyta o instancje UIView, jak na zrzucie ekranu. – Fogmeister