【问题标题】:Creating Sticker Pack programmatically, issue with casting UICollectionViewCell as MSStickerView以编程方式创建贴纸包,将 UICollectionViewCell 转换为 MSStickerView 时出现问题
【发布时间】:2018-04-15 15:20:34
【问题描述】:

因此,我选择在我的消息扩展贴纸包中不使用故事板。 iMessage 应用程序带有一个故事板文件和一个 MessagesViewController.swift。我创建了 2 个名为 CollectionViewController 和 StickerCell 的文件。这个想法是将 CollectionViewCell 子类化并将其转换为 MSStickerView 并将该视图作为“单元格”出列到我的 CollectionView 中。

以下是将“StickerCell”设置为 MSSstickerView 的代码:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let item = data[indexPath.row]
    return deQStickerCell(for: item, at: indexPath)
}

private func deQStickerCell(for sticker: MSSticker, at indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView?.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! StickerCell
    cell.stickerView.sticker = sticker
    return cell
}

以及我的 StickerCell 类中的代码:

class StickerCell: UICollectionViewCell {
    var stickerView: MSStickerView!
}

我猜问题出在这里,因为我已经使用故事板和 StickerClass 中的确切代码成功完成了此操作,除了 var 是一个 IBOutlet。很明显,有些东西没有连接到 CollectionView,或者我错过了一步。在 Interface Builder 中,我将创建 CollectionViewController,给它一个 CollectionView,给它一个 CollectionViewCell,然后在顶部添加一个 UIView 并将它的类更改为 MSStickerView。

如何以编程方式重新创建 Interface Builder 工作流程!?

【问题讨论】:

    标签: swift programmatically-created imessage-extension msstickerview mssticker


    【解决方案1】:

    很难确切知道您的问题是什么,但据我所知,您并没有返回带有stickerView 子视图的StickerCell。与 IB 不同的是,您从未初始化您的stickerView。您需要添加一个 init,它将创建视图并将其添加到您的单元格。类似(伪代码):

    override init(frame: CGRect) {
        super.init(frame: frame)
    
        self.stickerView = StickerView()
        self.contentView.addSubview(self.stickerView)
        // Set up your constraints & layout
    }
    

    【讨论】:

    • 噢噢噢噢。我认为 IB 为我所做的一切都是理所当然的。这就是为什么我强迫自己以编程方式做事。我会试一试这样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多