У меня есть следующий код внутри ViewWillAppear
:
CGFloat typeViewHeight = self.scrollview.frame.size.height;
CGFloat typeViewWidth = 120;
for (UIView *view in [self.scrollview subviews]) {
if([view isKindOfClass:[TypeSelectionItemView class]]) {
[view removeFromSuperview];
}
}
for (int i = 0; i < typeArray.count; ++i) {
TypeSelectionItemView *typeView = nil;
CGRect frame = CGRectMake(typeViewWidth * i, 0, typeViewWidth, typeViewHeight);
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TypeSelectionItemView" owner:self options:nil];
for(id currentObject in topLevelObjects){
if([currentObject isKindOfClass:[TypeSelectionItemView class]]){
typeView = (TypeSelectionItemView *) currentObject;
break;
}
}
[self.typeScrollView setContentSize:CGSizeMake(typeViewWidth * (i + 1), typeViewHeight)];
[self.typeScrollView addSubview:typeView];
}
Положение и размер подпредставлений не верны, когда я вижу в приложении, однако, если я помещаю его в ViewDidAppear
, положение и размер подпредставленийправильно, но представления слишком поздно для отображения пользователю.
Есть ли способ решить эту проблему, по-прежнему помещая этот код в ViewWillAppear
?
Я пробовал этот код в ViewWillAppear
но не работает вообще:
[self.typeScrollView setNeedsUpdateConstraints];
[self.typeScrollView updateConstraintsIfNeeded];
[self.typeScrollView setNeedsLayout];
[self.typeScrollView layoutSubviews];
[self.typeScrollView layoutIfNeeded];