gpt4 book ai didi

ios - 没有 Storyboard的自定义 UIView

转载 作者:行者123 更新时间:2023-11-28 12:13:27 26 4
gpt4 key购买 nike

现在我正在练习不使用 Storyboard构建 IOS 应用程序,但我有一个问题想要解决,我创建了一个名为 BannerView 的自定义 UIView 并添加了一个背景(UIView)和一个标题(UILabel ) ,并在 MainVC 中调用了这个 BannerView ,但是运行这个应用程序,它在函数 setupSubviews() 处崩溃,我不知道为什么。

import UIKit
import SnapKit

class BannerView: UIView {

var background: UIView!
var title: UILabel!

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

convenience init() {
self.init(frame: CGRect.zero)
}

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

func setupSubviews() {
background.backgroundColor = .gray
title.text = "INHEART"

self.addSubview(background)
self.addSubview(title)
}

override func layoutSubviews() {
background.snp.makeConstraints { make in
make.width.equalTo(ScreenWidth)
make.height.equalTo(BannerHeight)
make.left.top.right.equalTo(0)
}

title.snp.makeConstraints { make in
make.width.equalTo(100)
make.center.equalTo(background.snp.center)
}
}

}




class MainVC: UIViewController {

var bannerView:BannerView!

override func viewDidLoad() {
super.viewDidLoad()
bannerView = BannerView(frame: CGRect.zero)
view.addSubview(bannerView)
}

}

最佳答案

您的属性似乎没有被初始化

var background: UIView!
var title: UILabel!

你应该在你的初始化方法中初始化它们

self.background = UIView()
self.title = UILabel()

如果对类属性使用强制展开,则必须在 init 方法中进行初始化。 XCode 应该就此向您提示并且您的错误消息应该显示类似的错误

关于ios - 没有 Storyboard的自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654204/

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