我试图将各种尺寸的图像放置在 UITableViewCell 的 imageView 中。我异步获取图像数据,创建图像,设置 imageView 的内容模式,最后设置 imageView 的边界。但代码似乎对我所做的任何更改都不敏感。我希望图像位于 75x75 区域的中心。我为此目的编写了以下代码
UIImage* image = [UIImage imageWithData:data];
[holder.imageView setContentMode:UIViewContentModeCenter || UIViewContentModeRedraw];
[holder.imageView setImage:image];
[holder.imageView setBounds:CGRectMake(0,0,75,75)];
[holder.imageView setFrame:CGRectMake(0,0,75,75)];
[holder setNeedsLayout];
其中holder是UITableViewCell。我得到的结果总是一样的。所有图像的高度为 75 像素,宽度不同。有人可以帮我解决这个问题吗?
我意识到设置 contentMode 和bounds 属性在该代码中没有任何效果。我在最后一行后添加了 NSLog 并得到如下结果:
NSLog(@"imageview:%@ bounds and contentMode:%@ %@",[holder imageView],[holder.imageView bounds],[holder.imageView contentMode]);
imageview:<UIImageView: 0x39ab8a0; frame = (0 0; 75 75); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x39a92b0>> bounds and contentMode:(null) (null)
还是没有解决
最佳答案
完成,我终于找到了解决方案,不过花了我 3 个小时 =)
解决方案是在自定义 UITableViewCell 类的 -(void)layoutSubviews 方法中更改属性,如bound、frame、contentMode。 “窍门”是在这个方法中编写布局代码,否则代码没有任何效果。
下面的代码为我完成了工作。它使表格的行垂直对齐。
- (void)layoutSubviews {
[super layoutSubviews];
self.imageView.bounds = CGRectMake(0,0,75,75);
self.imageView.frame = CGRectMake(0,0,75,75);
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
CGRect tmpFrame = self.textLabel.frame;
tmpFrame.origin.x = 77;
self.textLabel.frame = tmpFrame;
tmpFrame = self.detailTextLabel.frame;
tmpFrame.origin.x = 77;
self.detailTextLabel.frame = tmpFrame;
}
关于iphone - 更改 UITableViewCell 的 imageView 的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130804/