我试图将collectionViewCell图像设置为全宽,然后高度等于图像,所以它是按比例的,我是在约束下创建的,但似乎没有发生任何事情?
class BrowseCell: UICollectionViewCell {
@IBOutlet var mainImageView:UIImageView?
override init(frame: CGRect) {
super.init(frame: CGRect())
self.backgroundColor = UIColor.whiteColor()
var viewBindingsDict: NSMutableDictionary = NSMutableDictionary()
viewBindingsDict.setValue(mainImageView, forKey: "MainImageView")
mainImageView?.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[MainImageView(==width)]", options: nil, metrics: nil, views: viewBindingsDict as [NSObject : AnyObject]))
mainImageView?.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[MainImageView(==height)]", options: nil, metrics: nil, views: viewBindingsDict as [NSObject : AnyObject]))
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
答案 0 :(得分:0)
@IBOutlet
,因此可能是在故事板中创建的,因此您需要在init(coder: NSCoder)
函数中初始化单元格。您无法在init(coder: NSCoder)
到@IBOutlet
个视图中添加约束,因为此时它们不存在。这可以在updateConstraints()
中完成,如下所示:
override func updateConstraints()
{
mainImageView.removeConstraints(mainImageView.constraints())
mainImageView.addConstraints(...)
super.updateConstraints()
}
我认为最好在故事板中添加约束,并根据collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
委托方法中的图像属性更改单元格的大小。