ios UIImage比例方面填充和剪裁子视图在UICollectionView中不起作用

0pizxfdo  于 2023-11-19  发布在  iOS
关注(0)|答案(4)|浏览(100)

我有一个UICollectionView,其中一个单元格包含一个UIImageView。我设置UIImageView frame.size以匹配单元格的frame.size,并在 *cellForItemAtIndexPath * 方法中显式要求UIImageView使用Aspect Fill & Clip子视图进行缩放:

let cell:UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UICollectionViewCell

... 

var imageView = UIImageView(image: self.eventImages[indexPath.row])
imageView.frame.size = cell.frame.size
cell.contentMode = UIViewContentMode.ScaleAspectFill
cell.clipsToBounds = true
imageView.contentMode = UIViewContentMode.ScaleAspectFill
imageView.clipsToBounds = true
cell.addSubview(imageView)

字符串
结果是一个拉伸的图像**(图像A),但是当我点击(点击)图像时,它“神奇地”解决了Aspect Fill & Clip Subviews(图像B)**。我似乎不明白为什么这只发生在点击后,而不是第一次加载图像时。它们被异步地提取到服务器,但是缩放仅发生在图像的轻敲之后(也没有实现轻敲功能)。
注意事项:UICollectionView是在故事板视图控制器中设置的,集合视图和可重用单元格都启用了Aspect Fill和Clip Subviews。

图像A(缩放错误-拉伸且未裁剪):

x1c 0d1x的数据

图像B(点击后正确缩放):


jvidinwx

jvidinwx1#

很简单,只要这样做:

imageView.contentMode = UIViewContentMode.ScaleAspectFill;
imageView.layer.masksToBounds = YES;

字符串

vi4fp9gy

vi4fp9gy2#

我认为你应该使用:

imageView.contentMode = UIViewContentMode.ScaleAspectFill
imageView.clipsToBounds = true

字符串
而不是这样:

cell.contentMode = UIViewContentMode.ScaleAspectFill
  cell.clipsToBounds = true

esyap4oy

esyap4oy3#

[yourImageView setContentMode:UIViewContentModeScaleAmmandFill]; yourImageView.layer.masksToBounds = YES;

iyr7buue

iyr7buue4#

imageView.contentMode = UIView.ContentMode. scaleA填充imageView.layer.masksToBounds = true

相关问题