2017-10-05 86 views
0

我有UICollectionViewCell中的UIImageView,我正在移动相对于滚动视图内容偏移量。这是为了在用户水平滚动时提供视差效果,但是当滚动视图开始滚动时似乎存在裁剪问题。UIImageView没有剪裁到UIView边界,而动画

而不是剪裁,边缘会持续存在,并显示在容器边界之外。

所附的截屏展示最好的行为...... enter image description here 在屏幕打出滚动视图开始滚动权和附带的看法已经开始翻译不过的UIImageView并没有裁剪边界相匹配的接收器。在这种情况下应该是透明的UIView。

这里是UIImageView的

let cellImage: UIImageView = { 
    let c = UIImageView() 
    c.clipsToBounds = true 
    c.layer.masksToBounds = true 
    c.contentMode = .scaleAspectFill 
    c.image = UIImage(named: "tree") 
    c.translatesAutoresizingMaskIntoConstraints = false 
    c.layer.cornerRadius = 15 
    return c 
}() 

随后的UIImageView添加到containerView并设置为填补它的边界。

cellContainerView.addSubview(cellImage) 
//add constraints 

我的想法是,如果有什么这个问题可能与我的.clipsToBounds财产做什么解释做。

的文档状态:

将该值设置为true会导致子视图被裁剪到指定边界接收机的 。

我最初认为接收器是你附加UIImageView的视图,但是看起来不是这样。 有什么建议吗?

回答

2

由于文档状态:

将该值设置为true会导致子视图被裁剪到指定边界接收机的 。

当前您正在设置此属性cellImage,所以在这种情况下,它是接收器,所以其子视图将被剪切。但是你想剪辑这个imageview,所以我认为你需要在cellContainerView上设置这个属性,因为你希望它的子视图被剪切。