0
我試圖子類的UIImageView添加一個UIControl它,因此當它被選中,我知道:子類的UIImageView並添加UIControl
-(id)initWithSize:(CGSize)size OffImage:(UIImage *)offImage onImage:(UIImage *)onImage
{
if (self) {
[self setTranslatesAutoresizingMaskIntoConstraints:NO];
self.userInteractionEnabled = TRUE;
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[self(80)]"
options:0
metrics:@{@"WIDTH" : [NSNumber numberWithFloat:size.width]}
views:NSDictionaryOfVariableBindings(self)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[self(90)]"
options:0
metrics:@{@"HEIGHT" : [NSNumber numberWithFloat:size.height]}
views:NSDictionaryOfVariableBindings(self)]];
self.offImage = offImage;
self.onImage = onImage;
self.selected = FALSE;
UIControl *control = [[UIControl alloc] init];
[control setTranslatesAutoresizingMaskIntoConstraints:NO];
self.control = control;
[self addSubview:control];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[control]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(control)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[control]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(control)]];
}
return self;
}
當我嘗試添加的約束,使UIControl的同樣大小的子類的UIImageView,我得到一個錯誤說self.control沒有一個上海華:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse constraint format:
Unable to interpret '|' character, because the related view doesn't have a superview
H:|[control]|
^'
如果我通過創建一個UIImageView做同一類型的東西,然後創建一個UIControl和[imageView addsubview:control]
,它工作得很好。爲什麼當我嘗試將相同的代碼添加到init
方法時會崩潰?
唉,就是這樣,謝謝!我忘了'self = [super init]'。現在我感到很傻。 – Padin215