我正在尝试将UIView子类化以创建一个选择框,用户可以在其中选择一系列过滤器(我将最终应用于UITableView)。我创建了一个像这样的自定义类
import UIKit
class FilterView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.addFilterView()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var lblFilter = UILabel()
var butApply = UIButton()
func addFilterView() {
backgroundColor = UIColor.blue
frame = Layout.filterFrame
self.butApply.frame = CGRect(x: 40, y: 60, width: 60, height: 30)
self.butApply.setTitle("Apply", for: .normal)
self.addSubview(butApply)
}
}
(Layout.filterFrame是一个返回CGRect的结构)
然后在View Controller中使用此子类尝试弹出窗口
let f = FilterView(frame: Layout.filterFrame)
@IBAction func butFilter(_ sender: Any) {
//f.backgroundColor = UIColor.blue
//f.frame = Layout.filterFrame
self.view.addSubview(f)
所有这一切都是因为我得到一个完全没有白色屏幕的白色屏幕。但是,如果我取消注释@IBAction中的行以设置背景颜色和框架,则弹出窗口可以正常工作。是不是可以直接在子类中设置框架和背景等,这样我每次使用它时都不必设置它?一个子类不是一次定义这些东西,所以它们可以在任何地方使用吗?