UIView / UIControl忽略帧矩形。始终全屏

时间:2016-08-16 14:47:40

标签: ios uiview swift2

我正在尝试在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)

1 个答案:

答案 0 :(得分:-1)

卫生署!我把它解决了。事实证明这是我自己的错,因为我在包含视图中实现了以下内容:

override func viewDidLayoutSubviews() {
  super.viewDidLayoutSubviews()
  for view in self.view.subviews {
      view.frame = UIScreen.mainScreen().bounds
  }
}