Swift:addSubview没有出现在视图层次结构中

时间:2018-05-13 03:07:41

标签: ios swift

enter image description here

我正在调试这个问题,我在这个函数的末尾有一个断点。当我使用Capture View Hierarchy检查它时,无法看到名为“overlayView”的子视图。

import UIKit

class BrowseCell: UICollectionViewCell {
    @IBOutlet weak var imageView: UIImageView!

    func addOverlayView() {
        let overlayView = UIView()
        overlayView.alpha = 0.6
        overlayView.backgroundColor = .green
        overlayView.frame = self.bounds
        self.imageView.addSubview(overlayView)
        self.bringSubview(toFront: overlayView)
    }
}

有人可以建议调试提示吗?

3 个答案:

答案 0 :(得分:2)

您能告诉我您在哪里打电话 addOverlayView()

我认为它应该来自 awakeFromNib()

答案 1 :(得分:0)

您可以使用insertSubview方法在UIImageView中添加叠加层视图,如下所示:

import UIKit

class BrowseCell: UICollectionViewCell {
    @IBOutlet weak var imageView: UIImageView!

    func addOverlayView() {
        let overlayView = UIView(frame: self.bounds)
        overlayView.alpha = 0.6
        overlayView.backgroundColor = .green
        self.imageView.insertSubview(_ view: overlayView, at index: 0)
    }
}

答案 2 :(得分:0)

对不起男孩,这是一个愚蠢的屏幕外错误。当我应该使用cellForItem(at :)时,我正在使用dequeueReusableCell。我添加了正确的代码。

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = collectionView.cellForItem(at: indexPath) as! BrowseCell

        cell.addOverlayView()
    }