[英]UIControl from xib crashes on ios 7.1
我在情節提要中創建了一個自定義UIControl(MyControl)。 在ios 8和ios 9上,一切正常,我的應用程序沒有崩潰。 但是在ios 7(例如iphone 4)上,嘗試加載包含此控件的視圖控制器時,應用程序崩潰。 調試器突出顯示以下行:
typeof(self)loadedView = self.viewFromNib;
MyControl.h:
@interface MyControl : ControlFromXib
ControlFromXib.h:
@interface ControlFromXib : UIControl
- (void)commonInit;
@end
ControlFromXib.m:
- (instancetype)viewFromNib
{
typeof(self) view = [[NSBundle mainBundle] loadNibNamed:self.nibName owner:nil options:nil].firstObject;
return view;
}
- (NSString *)nibName
{
return NSStringFromClass([self class]);
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self = self.viewFromNib;
[self commonInit];
self.frame = frame;
}
return self;
}
- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder
{
if (self.subviews.count == 0) {
typeof(self) loadedView = self.viewFromNib;
loadedView.frame = self.frame;
loadedView.autoresizingMask = self.autoresizingMask;
loadedView.translatesAutoresizingMaskIntoConstraints = self.translatesAutoresizingMaskIntoConstraints;
for (NSLayoutConstraint *constraint in self.constraints) {
id firstItem = constraint.firstItem;
if (firstItem == self) {
firstItem = loadedView;
}
id secondItem = constraint.secondItem;
if (secondItem == self) {
secondItem = loadedView;
}
[loadedView addConstraint:
[NSLayoutConstraint constraintWithItem:firstItem
attribute:constraint.firstAttribute
relatedBy:constraint.relation
toItem:secondItem
attribute:constraint.secondAttribute
multiplier:constraint.multiplier
constant:constraint.constant]];
}
self = loadedView;
}
[self commonInit];
return self;
}
- (void)commonInit
{
}
@end
檢查約束屬性,並與此處的列表進行比較。 以下屬性是在iOS 8中添加的,如果在xib或代碼中引用,則會在iOS 7(或更早版本)上崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.