iphone - 更改 UITableViewCell 的 imageView 的边界

标签 iphone uitableview imageview

我试图将各种尺寸的图像放置在 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/

相关文章:

ios - 设置在 uitableview 单元格中添加的 uilabel 文本

imageview - 调整图像大小以适合父节点

Android:滚动 ImageView

iphone - ios 身份验证的最佳实践和教程

ios - 取消 iOS 版本

c++ - 是否可以用 C++ 对 iPhone 进行编程

iphone - SKPaymentTransactionObserver 没有在应用切换时得到回调

ios - 尽管垂直对齐设置为中心,但 UITextField 是第一响应者时的文本要么被剪裁,要么出现在内容 View 的底部

IOS:将 UITableView 的方向从水平更改为垂直

java - 如何指定占位符图像?