gpt4 book ai didi

ios - 可重用的 UITableviewcell 无法正确显示初始图像

转载 作者:行者123 更新时间:2023-11-29 02:35:44 25 4
gpt4 key购买 nike

所以我有一个带有动态原型(prototype)的 UITableview。这些单元格是具有 4 个属性的自定义单元格:

  • imageVBkg(背景图片)
  • mainText(标签)
  • 副标题(标签)
  • personImageView(带有人物照片的 uiimageview)。

我在我原来的 Storyboard中工作得很好,但最近搬到了一个新的 Storyboard。(仅供引用,我无法使用旧 Storyboard重新测试,因为对代码进行了一些更改以排除这种情况)。

** 这似乎是一个自动布局问题。禁用自动布局可以解决问题(但自动布局是有原因的)。 **

基本上,问题是这样的:

  • 标签内容显示正常(数据取自 fetchedresultscontroller/coredata)
  • imageVBkg 工作正常
  • 记录图像确实存在的报告
  • 列表项
  • 最初显示时,personImageView 内容不可见
  • 一旦我滚动并“重复使用”单元格,personImageView 内容就会正确显示。

** 编辑 **

  • 如果我选择一个单元格并转到下一个屏幕,然后点击保存按钮,应用程序将返回到原始表格 View 屏幕,并显示图像。更新核心数据信息会使图像出现并没有多大意义。

下面是一些示例代码...

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
PersonCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"personCell" forIndexPath:indexPath];
if (cell == nil) {
cell = [[PersonCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"personCell"];
}
cell.delegate = self;
cell.dataSource = self;
cell.backgroundColor = _blueColor;

[self configureCell:cell atIndexPath:indexPath];
return cell;
}

-(void)configureCell:(PersonCell *)cell atIndexPath:(NSIndexPath *)indexPath
{

Person *person = [_fetchedResultsController objectAtIndexPath:indexPath];

cell.imageVBkg.image = [[UIImage imageNamed:@"list-item-background"] resizableImageWithCapInsets:UIEdgeInsetsMake(50, 50, 30, 30)];
cell.mainText.text = [NSString stringWithFormat:@"%@ %@", person.firstname, person.lastname];
Company *company = (Company *)person.worksFor;
NSString *fullString = person.position;
if ([company.name length] > 0 && [person.position length] > 0) {
fullString = [fullString stringByAppendingString:@" at "];
}
if (company.name != nil) {
fullString = [fullString stringByAppendingString:company.name];
}

cell.subtitle.text = fullString;

if ([person hasPhoto]) {
_image = [person photoImage];
if (_image != nil) {
cell.personImageView.clipsToBounds = YES;
cell.personImageView.image = _image;
cell.personImageView.layer.cornerRadius = cell.personImageView.bounds.size.width / 2.0f;
}
}
}

PersonCell.h 具有以下属性:

@property (nonatomic, weak) IBOutlet UILabel *mainText;
@property (nonatomic, weak) IBOutlet UILabel *subtitle;
@property (nonatomic, weak) IBOutlet UIImageView *personImageView;
@property (strong, nonatomic) IBOutlet UIImageView *imageVBkg;

另外值得一提的是...如果我不使用“cell.personImageView.clipsToBounds = YES;”然后 personImageView 图像确实出现,但显示为正方形,而不是圆形,这正是我所需要的。

希望这是一个简单的修复...

提前感谢您的任何建议。

最佳答案

在此处的单元格中使用此代码 122,111 是表格 View 单元格中 ImageView 的框架

 CGSize itemSize = CGSizeMake(122,111);    
UIGraphicsBeginImageContextWithOptions(itemSize, NO, UIScreen.mainScreen.scale);
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
[cell.imageView.image drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

关于ios - 可重用的 UITableviewcell 无法正确显示初始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com