我有一个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(点击后正确缩放):
的
4条答案
按热度按时间jvidinwx1#
很简单,只要这样做:
字符串
vi4fp9gy2#
我认为你应该使用:
字符串
而不是这样:
型
esyap4oy3#
[yourImageView setContentMode:UIViewContentModeScaleAmmandFill]; yourImageView.layer.masksToBounds = YES;
iyr7buue4#
imageView.contentMode = UIView.ContentMode. scaleA填充imageView.layer.masksToBounds = true