В конечном итоге я пытаюсь вертикально центрировать свои ячейки представления таблицы в UITableView, если общее количество ячеек * высота строки ‹высота tableView
Моя проблема в том, что всякий раз, когда я пытаюсь сослаться на высоту представления таблицы (размер которой должен быть изменен при добавлении в его супервизор. Он возвращает исходную высоту представления, как определено в Interface Builder).
Вот метод, который добавляет subView с tableView:
- (void)addMissonListView {
missionView = [BSMissionListView loadMissionView:YES];
BSList *list = (BSList *)self.dataModel;
missionView.missionList = list.arrayMissions;
missionView.delegate = self;
missionView.heightofSuperView = [NSNumber numberWithFloat:viewBottomContainer.frame.size.height];
[viewBottomContainer addSubview:missionView];
[viewBottomContainer setTranslatesAutoresizingMaskIntoConstraints:NO];
[BSUtility setConstraintsOnView:viewBottomContainer relativeTo:missionView withConstant:0];
}
Это вызываемый метод setsConstraintsOnView:
+ (void)setConstraintsOnView:(UIView *)superView relativeTo:(UIView *)subView withConstant:(int)constant
{
[subView setTranslatesAutoresizingMaskIntoConstraints:NO];
[superView addConstraint:[NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeBottom multiplier:1 constant:constant]];
[superView addConstraint:[NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeTop multiplier:1 constant:constant]];
[superView addConstraint:[NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeRight multiplier:1 constant:constant]];
[superView addConstraint:[NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeLeft multiplier:1 constant:constant]];
}
- Подпредставление состоит из tableView внутри UIView. В Interface Builder размер UIView составляет 320 X 586, а размер tableView - 310 x 558.
- Размер viewBottomContainer в IB - 320 x 408
Я пытаюсь получить информацию о высоте представления и tableView в методе configureGUI. И как только это сработает, я передам его другому методу для создания contentOffset в TableView. но NSLog продолжает возвращать исходные значения, а не значения с измененным размером.
Это методы из класса BSMissionListView:
- (void)awakeFromNib {
[super awakeFromNib];
[self configureGUI];
}
- (void)configureGUI {
[super configureGUI];
NSLog(@"Bounds height of the View is %f",self.bounds.size.height);
NSLog(@"Bounds height of the tableView is %f",self.tableViewMissionList.bounds.size.height);
[self setBackgroundColor:[UIColor clearColor]];
}
Я буду рад опубликовать больше кода, если это будет полезно. Спасибо!
translatesAutoresizingMaskIntoConstraints
установлен наNO
наmissionView
? - person Alex Reynolds   schedule 10.02.2015[superview layoutIfNeeded]
, чтобы применить эти ограничения? - person Alex Reynolds   schedule 10.02.2015