【发布时间】:2017-03-09 23:31:21
【问题描述】:
我在 iOS 10 中的 tableview 中显示图像时遇到问题,但相同的代码在 iOS 10 下工作,我在下面添加了我的代码的 sn-p。请帮忙。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"InboxTableViewCell";
InboxTableViewCell *cell = (InboxTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
cell = [[InboxTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
[cell setBackgroundColor:[cellColors objectAtIndex:indexPath.row]];
[cell.profileImageView setImage:[UIImage imageNamed:@"profile.jpg"]];
return cell;
}
在单元格中,我正在制作圆形图像
#import "InboxTableViewCell.h"
@implementation InboxTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
-(void)layoutSubviews{
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width/2;
self.profileImageView.clipsToBounds=YES;
[super layoutSubviews];
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
【问题讨论】:
-
圆角半径代码有问题吗?我敢打赌,如果您删除它,您的问题仍然存在,所以我们很可能不需要它来回答。此外,一旦视图从 nib 唤醒就足够了,您不需要重复设置图层属性。
-
dequeueReusableCellWithIdentifier:cellIdentifier永远不会产生一个 nil 单元格,那么为什么要检查它呢? -
还有
layOutSubviews被多次调用。因此,请在cellForRowAtIndexPath中转圈。 -
或者最好是
- awakeFromNib。从软件设计的角度来看,视图会自行配置。把它放在 viewController 中只是糟糕的设计。 -
尝试将您的单元格 setImage 方法放入主队列。像这样
dispatch_async(dispatch_get_main_queue(), ^(void){ [cell.profileImageView setImage:[UIImage imageNamed:@"profile.jpg"]]; });
标签: ios objective-c uitableview ios10