将 func loadview 中声明的 self.view 约束到视图控制器的部分区域
Posted
技术标签:
【中文标题】将 func loadview 中声明的 self.view 约束到视图控制器的部分区域【英文标题】:constrain self.view declared in func loadview to a partial area of the view controller 【发布时间】:2019-10-26 04:22:12 【问题描述】:我在子类画布下的代码用于绘制属性。我正在尝试将画布限制在 viewdidload 中的特定区域。问题是 func loadView 正在阻止 viewdidload 中的约束工作。在调试区域中,它指出无法同时满足约束。
var canvas = Canvas()
override func loadView()
self.view = canvas
override func viewDidLoad()
super.viewDidLoad()
canvas.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate ([
canvas.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :37.5),
canvas.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
canvas.widthAnchor.constraint(equalToConstant: 75),
canvas.heightAnchor.constraint(equalToConstant: 50),
])
class Canvas: UIView
【问题讨论】:
【参考方案1】:您是否将 canvas 添加为 view 的子视图?您需要在设置约束之前这样做:
canvas.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(canvas)
NSLayoutConstraint.activate ([
canvas.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :37.5),
canvas.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
canvas.widthAnchor.constraint(equalToConstant: 75),
canvas.heightAnchor.constraint(equalToConstant: 50),
])
【讨论】:
我试过你的代码这是我在调试区域中得到的由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法将自身添加为子视图”以上是关于将 func loadview 中声明的 self.view 约束到视图控制器的部分区域的主要内容,如果未能解决你的问题,请参考以下文章
在 UIViewController 的 loadView 中确定 self.view 的大小