在collectionViewCell中为imageview添加约束

时间:2015-08-30 11:03:31

标签: ios swift uicollectionview constraints

我试图将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)
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 由于您将imageView声明为@IBOutlet,因此可能是在故事板中创建的,因此您需要在init(coder: NSCoder)函数中初始化单元格。
  2. 您无法在init(coder: NSCoder)@IBOutlet个视图中添加约束,因为此时它们不存在。这可以在updateConstraints()中完成,如下所示:

    override func updateConstraints()
    {
        mainImageView.removeConstraints(mainImageView.constraints())
        mainImageView.addConstraints(...)
        super.updateConstraints()
    }
    
  3. 我认为最好在故事板中添加约束,并根据collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize委托方法中的图像属性更改单元格的大小。