【发布时间】:2016-09-29 10:37:48
【问题描述】:
在 UIImageView 中使用正确的纵横比来调整图像时遇到了很多麻烦。
最初从 plist 插入核心数据的所有图像都符合正确的纵横比,但随着使用应用程序添加图像(来自现有图像库),三个视图中的两个视图中的图像看起来比视图大本身 - 只显示照片的左上角。在下面的屏幕截图中,表格的第一行显示了通过 plist 添加的图像,接下来的两行(我的记录)显示了不受视图限制的照片。
上述视图中的单元格以通常的方式创建,然后在其自己的方法中进行配置,其中定义了它的属性。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
self.configureCell(cell, indexPath: indexPath)
return cell
}
func configureCell(cell: UITableViewCell, indexPath: NSIndexPath)
{
let record = fetchedResultsController.objectAtIndexPath(indexPath) as! Record
cell.textLabel!.text = record.subject
cell.detailTextLabel!.text = record.shortDetails
if let imageArray = imagesForRecord(record)
{
if imageArray.count > 0
{
cell.imageView?.contentMode = .ScaleAspectFit
cell.imageView?.clipsToBounds = true
cell.imageView?.image = imageArray[Int(record.featureImageIndex)]
}
}
}
但图像不会缩放,也不会被裁剪到 imageView 的范围内。最初加载的图像(如熊)不需要设置 contentMode 或 clipsToBounds。
我在不同的视图控制器(称为 VC2)中遇到了同样的问题,但是这个视图是使用故事板定义的。我有一个 UIImage 视图,它被约束到具有固定大小约束的 UIView 的所有侧面。 UIImage 视图设置为 Aspect Fit,但是当我从设备库设置图像时,它看起来像上面的图片 - 纵横比是正确的,但只显示图像的上角。
在另一个视图中,我的故事板布局与 VC2 几乎相同,但在这里它按预期工作。我看不出约束、属性和正在使用的相同照片(来自库)有任何区别。
我看不到任何差异,我无法想象如何从这里调试。毫无疑问,我误解了关于 Aspect Fit 或如何应用它的一些非常简单的东西。
【问题讨论】:
-
你确定你在正确的imageView上设置了.contentMode和.clipsToBounds吗? UITableViewCell 默认有一个 imageView 属性,用于显示基本单元格。另外,你在什么函数中调用这两个?
-
在故事板中,单元格的标识符是'Cell',然后在tableView.cellForRowAtIndexPath委托方法中使用tableView.dequeueReusableCellWithIdentifier实例化单元格。然后将此单元格传递给 configureCell 方法,在该方法中添加 contentMode 和 clipsToBounds(连同文本和图像),然后由委托方法返回。
-
使用 .UIViewContentMode.ScaleAspectFill。您无法将图像大小调整为您现在所期望的。即采取 whatsapp ,他们有同样的问题你所面临的。所以他们只需为所有图像坚持使用 .ScaleAspectFill。
-
显示设置图像和内容模式的代码 - 全部
-
您能否添加您的 cellForRowAtIndexPath 和 configureCell 方法的代码。
标签: swift uitableview uiimageview