我正在尝试在Swift 2.2中构建自定义组件,显然缺少必要的东西。我的观点忽略了框架矩形。
在包含视图中,我以编程方式添加视图:
let arrowControl = ArrowControl(frame: CGRect(x: 100 , y: 100, width: 300, height: 300))
self.view.addSubview(arrowControl)
实际上,即使我以编程方式添加UIView或UIControl而不对其进行子类化 - 然后视图也会忽略框架rect,并占据整个屏幕。
以下是我的自定义视图的基本部分:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func layoutSubviews() {
super.layoutSubviews()
renderComponent(frame)
}
编辑>>>>
如果我改变了我的例子,并删除了renderComponent,我仍然会遇到同样的问题。
override func layoutSubviews() {
super.layoutSubviews()
self.clipsToBounds = true
backgroundColor = UIColor.yellowColor()
// renderComponent(self.frame)
}
甚至做以下操作都会忽略frame rect,并给我一个全屏的颜色块:
let test = UIView(frame: CGRect(x: 100 , y: 100, width: 300, height: 300))
test.backgroundColor = UIColor.redColor()
self.view.addSubview(test)
答案 0 :(得分:-1)
卫生署!我把它解决了。事实证明这是我自己的错,因为我在包含视图中实现了以下内容:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for view in self.view.subviews {
view.frame = UIScreen.mainScreen().bounds
}
}