我正在尝试设置一个可以在右上角有图像的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 =”行,那么图片确实会以横向显示...虽然它不会转移到最右边。
如果还有其他我在这里做错了,请告诉我。
提前感谢您的任何帮助。
答案 0 :(得分:2)
我想出来了。解决方案是创建两个UIImageView的...一个用于星形角图像,一个用于单元格背景图像。
我将星角UIImageView作为子视图添加到背景图像UIImageView,然后将其分配给cell.backgroundView。
星形UIImageView通过使用正确定位自己:
starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
由于整个事物被分配给cell.backgroundView(而不是cell.contentView),它不受单元格的删除按钮或重新排序控件的影响。
答案 1 :(得分:0)
你的UIViewController应该响应didRotateFromInterfaceOrientation。
在此方法中,您可以遍历单元格,使用[cell viewWithTag]获取UIImageView并根据新单元格维度修改frame属性(cell.contentView.bounds)。
祝你好运!