У меня есть пользовательский UIView, который я хочу, чтобы иметь возможность повторного использования в моем приложении в качестве заголовка раздела в табличных представлениях. Здесь применяется код, который (это в основном все это делает):Все заголовки разделов в uitableview находятся в том же месте
-(id) initWithTitle:(NSString *)title{
self = [super init];
if(self){
_title = title;
self.translatesAutoresizingMaskIntoConstraints = false;
[self addSubview:self.titleLabel];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"H:|-%@-[_titleLabel]-%@-|", HORIZONTAL_SPACE, HORIZONTAL_SPACE] options:0 metrics:nil views:NSDictionaryOfVariableBindings(self, _titleLabel)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:|-%@-[_titleLabel]-%@-|", VERTICAL_SPACE, VERTICAL_SPACE] options:0 metrics:nil views:NSDictionaryOfVariableBindings(self, _titleLabel)]];
[self updateConstraintsIfNeeded];
}
return self;
}
Я использую это так:
- (UIView*)tableView:(UITableView*)tableView
viewForHeaderInSection:(NSInteger)section
{
NSString *headerText = _headers[section];
if(headerText.length){
AWSmallTextSectionHeader *header = [[AWSmallTextSectionHeader alloc] initWithTitle:headerText];
return header;
}
return [UIView new];
}
Проблема заключается в том, что когда взгляды обратить на экран они все начинаются с того же происхождения ... Это то, что выглядит как на верхней части Tableview:
Это действительно странно, хотя, потому что он действует как если он находится в правильном разделе, например, если вы начнете прокрутку и один из разделов перейдет в режим просмотра, вид, соответствующий заголовку этого раздела, исчезнет.
У меня такое чувство, что оно связано с тем, как я добавляю свои ограничения, но я не уверен.
Благодаря
Редактировать (это также реализовано)
- (CGFloat)tableView:(UITableView*)tableView
heightForHeaderInSection:(NSInteger)section
{
if (section == SECTION_INDEX_PHONE) {
return 60.f; //CGRectGetHeight(self.phoneSectionHeader.frame);
} else if (section == SECTION_INDEX_FEEDBACK) {
return 40.f; //CGRectGetHeight(self.feedbackSectionHeader.frame);
}
return 5.0;
}
как ширина/высота ограничений? – dostrander
или Bounds напрямую? – dostrander
Возможно. Я буду честен, макет в VFL для меня греческий, но в какой-то момент этот взгляд должен знать, насколько он высок и широк. Прямо сейчас _titleLabel имеет ограничения H и V, но нечего сказать, что это должна быть определенная высота или ширина. и ширины. –