gpt4 book ai didi

ios - 如何在自定义控件中将 UIView 居中?

转载 作者:行者123 更新时间:2023-11-28 15:23:26 25 4
gpt4 key购买 nike

我正在做一个练习来创建任何东西的自定义控件。我的想法是在屏幕中间有一个 UIView,在它下面有一个 UILabel。当您点击 View 时,将出现随机颜色,标签更改为其十六进制值。尝试创建此自定义控件时,我在尝试以编程方式将 UIView 居中时遇到问题。我在 `colorBox.center~

遇到问题
import UIKit

@IBDesignable
class Color: UIView {
private lazy var label : UILabel = {
let label = UILabel()
label.backgroundColor = UIColor.clear
label.translatesAutoresizingMaskIntoConstraints = false
label.heightAnchor.constraint(equalToConstant: 25.0).isActive = true
label.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
label.font = .systemFont(ofSize: 15.0, weight: UIFontWeightRegular)
return label
}()

private lazy var colorGen : UIView = {
let colorBox = UIView()
colorBox.backgroundColor = UIColor.black
colorBox.heightAnchor.constraint(equalToConstant: 100.0).isActive = true
colorBox.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
colorBox.centerXAnchor.constraint(equalTo: colorBox.frame.size.width /2)

}()

override init (frame: CGRect) {
super.init(frame:frame)
setUpLabel()
setUpView()
}

required init?(coder: NSCoder) {
super.init(coder: coder)
setUpLabel()
setUpView()
}

我已经尝试了有关使用 self.view 的答案,但它对我不起作用,所以我有点迷茫。

最佳答案

你很接近,但你需要添加标签和 View ,这样你就可以相对于父 View 约束它们......

@IBDesignable
class ColorView: UIView {

private lazy var colorLabel : UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.backgroundColor = UIColor.clear
label.heightAnchor.constraint(equalToConstant: 25.0).isActive = true
label.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
label.font = .systemFont(ofSize: 15.0, weight: UIFontWeightRegular)
return label
}()

private lazy var colorGen : UIView = {
let colorBox = UIView()
colorBox.translatesAutoresizingMaskIntoConstraints = false
colorBox.backgroundColor = UIColor.cyan
colorBox.heightAnchor.constraint(equalToConstant: 100.0).isActive = true
colorBox.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
return colorBox
}()

override init (frame: CGRect) {
super.init(frame:frame)
commonSetup()
}

required init?(coder: NSCoder) {
super.init(coder: coder)
commonSetup()
}

func commonSetup() -> Void {
self.addSubview(colorGen)
self.addSubview(colorLabel)

colorGen.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 0.0).isActive = true
colorGen.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 0.0).isActive = true
colorGen.topAnchor.constraint(equalTo: self.topAnchor, constant: 0.0).isActive = true

colorLabel.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 0.0).isActive = true
colorLabel.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 0.0).isActive = true
colorLabel.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0.0).isActive = true

colorLabel.topAnchor.constraint(equalTo: colorGen.bottomAnchor, constant: 0.0).isActive = true

colorLabel.text = "the label"
}

}

关于ios - 如何在自定义控件中将 UIView 居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597400/

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