Как ретранслировать представления на ViewWIllAppear? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть следующий код внутри 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];

1 Ответ

0 голосов
/ 05 июня 2018

Переместите ваши коды в ViewWillAppear в ViewWillLayoutSubview.
И если вам нужно получить реальный кадр / размер любого вида до ViewDidAppear.
Просто поместите эти две строки выше:

// Force scrollView to layout subview
scrollView.setNeedsLayout()
scrollView.layoutIfNeeded()
// ...

Надеюсь, это полезно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...