Я довольно новичок в iOS и Objective-C.
Я пытался заставить программно сгенерированный UITableView
работать правильно.В таблице используется пользовательский UITableViewCell
, который находится в собственном xib-файле, MeetingsTableViewCell
.
. Вот как выглядит .xib:
И ограничения для поля даты:
Вот как это выглядит при запуске:
Значок и метка даты и режима встречи расположены на 55 точек (?) Слишком далеко вправо в симуляции.
Ширина контроллера основного вида равна320 (кажется, я не могу это изменить)..Xib имеет ширину 375 (кажется, я тоже не могу это изменить).55 баллов.Стечение обстоятельств?Наверное, нет.
Когда я использовал иерархию представления отладки, я обнаружил, что представление Cell Wrapper было 375 баллов.Я добавил следующий код (возможно, больше, чем нужно, но я просто пробовал все, чтобы увидеть, смогу ли я это выяснить):
cell.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
cell.autoresizesSubviews = true;
cell.cellWrapperView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
cell.cellWrapperView.autoresizesSubviews = true;
Я также убедился, что у меня layoutIfNeeded
в MeetingsTableCellView.m
файл и добавленный код для изменения размера cellWrapperView
-(void)layoutIfNeeded {
[super layoutIfNeeded];
self.cellWrapperView.frame=self.contentView.bounds;
}
Это корректно изменило размеры представлений до 320, но не переместило значок / метку даты и режима встречи.
Представление отладкитеперь выглядит так:
TableCellView и все элементы полной ширины внутри него имеют ширину 320 точек.Значок / метка режима даты и встреч (правильно) имеют ширину 68 точек в соответствии с представлением отладки.Позиция Х - 297. Я не знаю, как сделать так, чтобы значок и метка режима даты и собраний находились в правильном положении.
В качестве примечания, если я поверну телефон в альбомную ориентацию, эти ширинывсе 375 вместо 320, но не должны ли они быть 568 сейчас?
Спасибо!
РЕДАКТИРОВАТЬ: код, который создает таблицу.
self.meetings=meetings;
self.meetingsTable=[[UITableView alloc] initWithFrame:self.tableWrapperView.bounds];
self.meetingsTable.delegate = self;
self.meetingsTable.dataSource = self;
self.meetingsTable.autoresizesSubviews = true;
self.meetingsTable.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableWrapperView.autoresizesSubviews = true;
UINib *cellNib=[UINib nibWithNibName:@"MeetingCellView" bundle:nil];
[self.meetingsTable registerNib:cellNib forCellReuseIdentifier:@"MeetingsCell"];
[self.meetingsTable reloadData];
[self.tableWrapperView addSubview:self.meetingsTable];