Что не так с iOS 3.0 и numberOfLines=0 для UITableViewCell?
Хорошо, вот в чем дело, уже два дня мы пытаемся построить приличную ячейку таблицы со стилем субтитров.
поэтому я переопределил метод 'tableview:heightforrowatindex:'. хорошо, я также поставил число строк для деталей в 0.
это отлично работает в ios4.0
но для ios 3.0 кажется, что текстовая метка и метка detailtextlabel имеют определенные поля в верхней части, что толкает все содержимое ячейки вниз, чтобы перекрыть ячейку ниже. Это безумное поведение. и я не мог найти способ установить местоположение textlabel /detailtextlabel в его представлении содержимого.
Пожалуйста помоги. Изменение размера UITableViewCells в iOS4 по сравнению с iOS3 Этот парень сказал, что собирается реализовать свои собственные элементы управления. но это слишком много работы, и это трудно для меня. Должен быть способ, которым кто-то уже знал, чтобы обойти эту проблему. Спасибо
1 ответ
На самом деле кажется, что люди из Apple на самом деле не сделали uitableviewcell настолько настраиваемым, как надеялись бы обычные разработчики.
так что вам придется настроить его самостоятельно. и потому что у меня не было времени переопределить UITableViewCell и реализовать свой собственный.
Я сделал это поспешно. через
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"cell"];
if( nil == cell ) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
//contentview
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(1, 5, 11, 9)];
imageView.image=_headerImage;
UILabel* textLabel=[UILabel new];
UILabel* detailTextLabel=[UILabel new];
//get and set the size of the labels here
textLabel.font=_font;
detailTextLabel.font=_fontD;
textLabel.numberOfLines=0;
detailTextLabel.numberOfLines=0;
textLabel.backgroundColor=[UIColor clearColor];
detailTextLabel.backgroundColor=[UIColor clearColor];
textLabel.tag=202;
detailTextLabel.tag=203;
imageView.tag = 204;
[cell.contentView addSubview:imageView];
[cell.contentView addSubview:textLabel];
[cell.contentView addSubview:detailTextLabel];
[textLabel release];
[detailTextLabel release];
[imageView release];
}
конечно при реализации
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(!_cellTitleSizes)
{
_cellTitleSizes= [NSMutableArray new];
_cellDetailSizes= [NSMutableArray new];
}
MenuItem *tempItem =[self GetItemFromIndexPath:indexPath];
CGSize size = [ tempItem.title sizeWithFont:_font constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];
CGSize size2 = [[MenuListViewController GetDetailsToDisplay:tempItem] sizeWithFont:_fontD constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];
//the following information will be used to set the title and description labels in the cell.
[_cellTitleSizes addObject:[NSValue valueWithCGSize:size]];
[_cellDetailSizes addObject:[NSValue valueWithCGSize:size2]];
return MAX( (size.height+size2.height)+ 30, 44.0f );
}
Удачи всем вам