NSLayoutConstraint 更改后,systemLayoutSizeFittingSize 不起作用

Posted

技术标签:

【中文标题】NSLayoutConstraint 更改后,systemLayoutSizeFittingSize 不起作用【英文标题】:After NSLayoutConstraint changed, systemLayoutSizeFittingSize is not working 【发布时间】:2015-07-24 04:13:10 【问题描述】:

我正在 swift 上使用 Autolayout,我想动态更改 UICollectionViewCellUIImageView 高度。

我尝试如下。 但是,systemLayoutSizeFittingSize 似乎不起作用。

class CellImage: UICollectionViewCell 
    @IBOutlet weak var imageHeight:NSLayoutConstraint!
     .
     .
     .
    internal func setup() 
        self.imageHeight.constant = 200
        self.layoutIfNeeded()
    
     .
     .
     .
    class func sizeForRow(#collectionView: UICollectionView, content: Content) -> CGSize 
        var cell = UINib(nibName:"name", bundle: nil).instantiateWithOwner(self, options: nil).first as! CellImage
        let width = CGRectGetWidth(collectionView.bounds)
        cell.frame.size.width = width
        cell.setup()
        let height = cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
        return CGSizeMake(width, height) // not correct
    

【问题讨论】:

【参考方案1】:

替换这个

let height = cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height

下面的代码

let height =cell.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize, withHorizontalFittingPriority: UILayoutPriorityDefaultHigh, verticalFittingPriority: UILayoutPriorityDefaultLow)

【讨论】:

以上是关于NSLayoutConstraint 更改后,systemLayoutSizeFittingSize 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更改 NSLayoutConstraint 的常量

更改 NSLayoutConstraint 时的 SWIFT 动画

如何以编程方式更改或更新 NSLayoutConstraint

我可以更改 NSLayoutConstraint 的乘数属性吗?

NSLayoutConstraint 的 Unsatisfiable Constraint 以编程方式更改 - swift

如何在 swift 中使用 NSLayoutConstraint 根据屏幕大小更改设计