自定义UiCollectionViewCell类init未被调用

时间:2016-06-22 01:50:38

标签: ios swift2 ios9 xcode7 uicollectionviewcell

您好我正在使用此代码尝试调整文本大小虽然我看不到要调整大小的标签。此外,未调用自定义类中的init方法。这是我的代码:

class Cell: UICollectionViewCell {


    @IBOutlet weak var label: UILabel!


    override init(frame: CGRect) {
        super.init(frame: frame)
        print("init—>Not being called???\n")
        self.label.adjustsFontSizeToFitWidth = true
        self.cell.label.sizeToFit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }


}

如何让init调用呢?我也试过调整方法

中的文字
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath

虽然标签的文字大小没有变化, 这是细胞长片的样子。 enter image description here 在此先感谢您的帮助。

如果我放置 -

  

adjustsFontSizeToFitWidth

  

sizeToFit

into - >

 required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.label.adjustsFontSizeToFitWidth = true  // causes error
        self.label.sizeToFit()
    }

enter image description here 我也遇到了错误。

1 个答案:

答案 0 :(得分:4)

将您的代码或断点放在init?(coder aDecoder: NSCoder)中。如果您在故事板中添加了CollectionView,那么应该调用它。

<强>更新 处理您的IBOutlets(在您的单元子类中)因为在init函数中它们可能尚未生效,我认为这是您的情况:

override func layoutSubviews() 
{
    super.layoutSubviews()
    self.label.adjustsFontSizeToFitWidth = true
    self.label.minimumScaleFactor = 0.8 //set the scale factor or minimumFontSize so that it can then start adjusting the font size.
    Self.label.numberOfLines = 1
}