gpt4 book ai didi

ios - UILabel 子类在使用约束时不显示

转载 作者:可可西里 更新时间:2023-11-01 00:54:25 25 4
gpt4 key购买 nike

我已经创建了一个子类来管理我的主题,但在设备或模拟器上都没有显示。

这是我的 Header.swift:

import Foundation
import UIKit

class Header: UILabel {
override var textColor: UIColor! {
// White Color
get { return ThemeManager.currentTheme.palette.primary }
set {}
}

override var font: UIFont! {
get { return ThemeManager.currentTheme.textStyle.headerText }
set {}
}
}

这里的实现:(在viewcontroller里面)

var titleLabel: Header = Header()

override func viewDidLoad() {
super.viewDidLoad()

view.backgroundColor = .black

// Background Image over the view
setupBackground()

setupStartButton()
setupTitleLabel()

print(titleLabel.frame)
}

// MARK: - Header
private func setupTitleLabel() {
titleLabel.text = "0.0m"

// titleLabel.font = ThemeManager.currentTheme.textStyle.headerText
// titleLabel.textColor = ThemeManager.currentTheme.palette.primary

view.addSubview(titleLabel)
view.bringSubviewToFront(titleLabel)

setupTitleLabelAutolayout()
}


private func setupTitleLabelAutolayout() {
titleLabel.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor),
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor)
])
}

但是,如果我使用 UILabel 而不是 Header,它会按预期完美运行。我还尝试实现 init?(coder aDecoder: NSCoder)init(frame: CGRect) 但没有任何改变。

如果我在 init 上设置一个 frame 然后显示文本,但没有样式并且忽略我的约束。

当然我错过了什么,但是什么?

为了避免有用的答案,这里有一些信息:

  • UILabel 文本颜色为白色
  • 背景为黑色,上面有图像。
  • 我已尝试删除图像和周围的所有内容,但没有任何改变。

最佳答案

这不是使用子类化的理由。它不允许您在适当的时候混合搭配。

最好做一个扩展:

extension UILabel {
func withHeaderStyle() -> UILabel {
self.textColor = ThemeManager.currentTheme.palette.primary
self.font = ThemeManager.currentTheme.textStyle.headerText
return self
}
}

然后在使用点:

var titleLabel = UILabel().withHeaderStyle()

您可以创建多个这样的“withXStyle”方法,并在使用时将它们链接在一起。这是继承无法做到的事情。


一般来说,只有当您想要改变行为时,您才应该使用继承。它不适合更改数据。

关于ios - UILabel 子类在使用约束时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53223544/

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