gpt4 book ai didi

ios - 自定义 UILabel 在 Interface Builder 中显示不正确

转载 作者:行者123 更新时间:2023-11-28 08:59:13 25 4
gpt4 key购买 nike

我有一个自定义的基于 UILabel 的类,它无法在 Storyboard中正确显示。

它只显示一个空白标签。 XCode 6 和 7 beta 都会发生这种情况。

import UIKit

@IBDesignable


class CCLabel: UILabel {

@IBInspectable var spacingChar: CGFloat = 0 {
didSet {
self.updateAttributed(self.text)
}
}

@IBInspectable var extraLineSpacing: CGFloat = 0 {
didSet {
self.updateAttributed(self.text)
}
}

override var bounds: CGRect {
didSet {
if (bounds.size.width != self.bounds.size.width) {
self.setNeedsUpdateConstraints()
}
super.bounds = bounds
}
}

override func updateConstraints() {
if (self.preferredMaxLayoutWidth != self.bounds.size.width) {
self.preferredMaxLayoutWidth = self.bounds.size.width
}
super.updateConstraints()
}

override var text: String? {
didSet {
if let txt = text {
self.updateAttributed(txt)
}
}
}

private func updateAttributed(text: String?) {

if (text == nil) {
return
}

if (extraLineSpacing > 0 || spacingChar > 0) {

let attrString = NSMutableAttributedString(string: text!)
let rng = NSMakeRange(0, attrString.length)

if (extraLineSpacing > 0) {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = extraLineSpacing
paragraphStyle.alignment = self.textAlignment

attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:rng)
}
if (spacingChar > 0) {
attrString.addAttribute(NSKernAttributeName, value:spacingChar, range:rng)
}

attrString.addAttribute(NSFontAttributeName, value: self.font, range: rng)

self.attributedText = attrString

}
}
}

这是 IB 中的自定义 UILabel 类:

This is how it looks

当我删除自定义类标签的名称时,它可以正常显示。

But it should look like this

当我再次添加它时,它并没有消失。然而,下一次它又变白了。

当您运行该项目时,它是完美的。我想 XCode 没有正确渲染它,但不知道为什么。

最佳答案

我认为你需要这样称呼:

[ super drawRect:rect];

关于ios - 自定义 UILabel 在 Interface Builder 中显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com