UITableViewCell内的IBDesignable未正确呈现

时间:2018-01-24 03:55:06

标签: ios swift storyboard ibdesignable

我在图像"下方有一个自定义"文字网格。静态UITableViewCell内的UIButtons。

为了使8个UIButton形成4x2网格,我将它们放入2个水平UIStackViews并用垂直UIStackView包装它们。 您可以在下面的屏幕截图中看到详细信息。

它在模拟器和真实设备上运行完美,但在Storyboard中无法正确呈现。我想知道我的代码中是否缺少这些内容,或者我应该在Storyboard中检查/取消选中某些设置。

运行时行为(效果很好)

enter image description here

在故事板(混乱)中

enter image description here

概要

enter image description here

自定义按钮:

import UIKit

@IBDesignable class YPTextBelowImageButton: UIButton {

    @IBInspectable var heightRatio: CGFloat = 0.8 {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.frame = frame
        self.imageView?.contentMode = .scaleAspectFit
        self.titleLabel?.textAlignment = .center
        self.setNeedsDisplay()
        self.setNeedsLayout()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.imageView?.contentMode = .scaleAspectFit
        self.titleLabel?.textAlignment = .center
        self.setNeedsDisplay()
        self.setNeedsLayout()
    }

    override func imageRect(forContentRect contentRect: CGRect) -> CGRect {
        return CGRect(x: 0, y: 0, width: contentRect.size.width, height: contentRect.size.height * heightRatio)
    }

    override func titleRect(forContentRect contentRect: CGRect) -> CGRect {
        return CGRect(x: 0, y: contentRect.size.height * heightRatio, width: contentRect.size.width, height: contentRect.size.height * (1 - heightRatio))
    }

}

预览:

enter image description here

func prepareForInterfaceBuilder无法正常工作

override func prepareForInterfaceBuilder() {
    self.imageView?.contentMode = .scaleAspectFit
    self.titleLabel?.textAlignment = .center
    self.setNeedsDisplay()
    self.setNeedsLayout()
}

0 个答案:

没有答案