【发布时间】:2015-06-28 02:51:20
【问题描述】:
所以我用自己的初始化器编写了自己的自定义视图。但是,当我的主视图加载时,我的自定义视图会以错误的方式描绘。它的边界为 600x600 矩形,而父视图为 375x607。我确实尝试过自动约束,似乎不起作用。我尝试在子视图初始化中以编程方式执行此操作,但每当我尝试将其 bounds 属性初始化为其父视图边界时,我在父视图中得到 nil。
override init(frame: CGRect) {
super.init(frame: frame)
self.setup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.setup()
}
func setup() {
initPathLayer()
initHandleView()
initHandlePanGestureRecognizer()
layoutPathLayer()
layoutHandleViews()
}
我尝试了互联网上的所有内容以使子视图填充其父视图,但我认为子视图在父视图之前被初始化?那可能吗 ?在 ViewController 中,将我的自定义视图声明为 Outlet 连接。我确信问题应该是超级简单的,是我不知道 Swift 初始化视图的方式。
有什么想法吗?
谢谢。
【问题讨论】:
-
尝试显示您添加的哪些约束应该有效。否则,您可以重写 layoutSubviews 方法以显式设置框架
-
问题是子视图在初始化之前看不到它的父视图。我将制作约束的屏幕截图
-
只看你的代码,你应该只在 layoutSubviews 中调用布局方法
-
谢谢!就是这样。正如我所说,这是一个很小的问题,原因是我缺乏经验。
-
哈哈不用担心,但你绝对应该能够在约束中表示这一点,所以我担心这不起作用