Я пытаюсь создать UITableViewCell, который может иметь изображение в правом верхнем углу.
У меня есть он работающий на режим портрета, но когда я вращаюсь для озеленения, изображение исчезает.
Вот код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UIImage *cornerImage = [UIImage imageNamed:@"star_corner.png"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.contentView.bounds.size.width - cornerImage.size.width,
0,
cornerImage.size.width,
cornerImage.size.height)];
imageView.tag = kCornerImageViewTag;
[cell.contentView addSubview:imageView];
[imageView release];
}
UIImageView *theView = (UIImageView *)[cell.contentView viewWithTag:kCornerImageViewTag];
[theView setImage: [UIImage imageNamed:@"star_corner.png"]];
cell.textLabel.text = @"the text label";
return cell;
}
Интересно, если я комментирую "cell.textLabel.text =" строка, изображение действительно показывает в среде..., хотя это не смещается справа.
Если существует что-либо еще, что я делаю неправильно здесь, сообщите мне.
Заранее спасибо за любую помощь.
Я понял это. Решением было создать два UIImageView ... один для изображения угла звезды и один для фонового изображения ячейки.
Я добавил звездный угол UIImageView в качестве подпредставления к фоновому изображению UIImageView, а затем назначил его для cell.backgroundView.
Звездочка UIImageView позиционирует себя правильно с помощью:
starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
И поскольку все это присвоено cell.backgroundView (вместо cell.contentView), на него не влияет кнопка удаления ячейки или элементы управления переупорядочением.
Ваш UIViewController должен отвечать на didRotateFromInterfaceOrientation.
В этом методе вы можете перебирать ячейки, получать UIImageView с помощью [cell viewWithTag] и изменять свойство фрейма в соответствии с новыми размерами ячейки (cell.contentView.bounds).
Удачи!