如何让 UIImageView 填充 UITableViewCell?

Posted

技术标签:

【中文标题】如何让 UIImageView 填充 UITableViewCell?【英文标题】:How do I make a UIImageView fill a UITableViewCell? 【发布时间】:2017-03-26 05:35:05 【问题描述】:

这是我的第一篇文章,所以如果有什么我应该做的不同的事情,请告诉我!

我正在制作一个照片应用程序,我希望照片填充 UITaleViewCells,并扩展单元格以适应图像。


我一直在努力让它发挥作用,我用谷歌搜索了我能做的所有事情,观看了一些 youtube 视频,但我找不到任何与 UIImageView 一起工作的内容。这是我现在正在使用的代码:

override func viewWillAppear(_ animated: Bool) 
        tableView.estimatedRowHeight = 100
        tableView.rowHeight = UITableViewAutomaticDimension
    

在 UIImageView 我有这些约束: Bottom MarginTop MarginTrailing MarginLeading Margin,当我运行我的应用程序时,我在图像的顶部和底部看到了这个非常奇怪的空间。


这里是一些截图:

【问题讨论】:

尝试在您的 viewdidload 方法中将 automaticallAdjustsScrollViewInsets 设置为 false。例如:tableview.automaticallAdjustsScrollViewInsets = false。 @TusharSharma 我该把代码放在哪里?在override func viewWillAppear(_ animated: Bool),我的问题中的代码在哪里,还是viewDidLoad()view 第一个字母应该大写吗? 在 viewDidLoad() 中添加 tableView.automaticallAdjustsScrollViewInsets = false @TusharSharma 好的,但我收到此错误:Value of type 'UITableView' has no member 'automaticallAdjustsScrollViewInsets' 你的桌子叫什么名字? 【参考方案1】:

我建议您为此尝试使用 UICollectionView,因为对于此类布局,最好使用集合视图而不是表视图,试试这个(tempArr 表示您的图像数组),

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
    // create a cell size from the image size, and return the size

    let picHeight = tempArr[indexPath.row].valueForKey("imgHeight") as! String
    let picWidth = tempArr[indexPath.row].valueForKey("imgWidth") as! String
    var picHeightFloat :CGFloat!
    var picWidthFloat :CGFloat!

    if let n = NSNumberFormatter().numberFromString(picHeight) 
        picHeightFloat = CGFloat(n)
    
    if let q = NSNumberFormatter().numberFromString(picWidth) 
        picWidthFloat = CGFloat(q)
    

    let imageSize = CGSize(width: picWidthFloat, height: picHeightFloat)


    return imageSize

【讨论】:

我去看看,我之前没用过UICollectionView。 我做过同样的应用程序,我也开始使用表格视图,但是随着需求和代码的易用性,我意识到最好使用集合视图。集合视图真的很容易。试一试。 我已经用你的 UITableView 解决了这个问题,但我会在以后的项目中记住 CollectionViews。感谢您的宝贵时间和建议!

以上是关于如何让 UIImageView 填充 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

如何缩放填充屏幕的 UIImageView

UIButton 内的 UIImageView 具有默认填充 - 如何删除?

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?

如何使用填充单元格的 UIImageView 初始化自定义 UICollectionViewCell?

如何在具有缩放填充模式的 tableViewHeader 中为 UIImageView 使用固定高度?