我在容器(A)中有一个视图控制器(B),我想在两者之间创建一些空间。现在,我所拥有的就像左边的图像一样,我创建的填充占据了B的空间,并且内容被截断了。右边的图像是理想的结果,其中B将具有圆角,并且距A会有更多空间。这是我的容器类中的代码现在的样子:
private func configureSampleContainer() {
sampleController.view.layer.borderColor = UIColor.clear
sampleController.view.layer.borderWidth = 10
sampleController.view.clipsToBounds = true
addChild(sampleController)
sampleController.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.constrain(view: sampleController.view, containerView: sampleContainer)
sampleController.didMove(toParent: self)
}
configureSampleContainer在viewDidLoad内部调用。
视图控制器B还在其他地方使用,因此理想情况下我不会在B中进行任何更改。那么如何从我的容器类A编程地实现这一点?
我相信您唯一需要做的就是在sampleController的视图中添加更多约束。
定义扩展名或仅使用我创建的扩展名的主体。
extension UIViewController {
func constrain(with margin: CGFloat, to: UIViewController) {
view.translatesAutoresizingMaskIntoConstraints = false
view.topAnchor.constraint(equalTo: to.view.topAnchor, constant: margin).isActive = true
view.leftAnchor.constraint(equalTo: to.view.leftAnchor, constant: margin).isActive = true
view.rightAnchor.constraint(equalTo: to.view.rightAnchor, constant: margin).isActive = true
view.bottomAnchor.constraint(equalTo: to.view.bottomAnchor, constant: margin).isActive = true
}
}
这样将在您的上下文中使用。
private func configureSampleContainer() {
sampleController.view.layer.borderColor = UIColor.clear
sampleController.view.layer.borderWidth = 10
sampleController.view.clipsToBounds = true
addChild(sampleController)
sampleController.constrain(with: 30, to: view)
sampleController.didMove(toParent: self)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句