我有一个 subview 以编程方式由其父 View 呈现。我想将 subview 的 CenterXAnchor 设置为受限于父 View 的 CenterXAnchor,但我希望 subview 具有特定的高度和宽度。
childViewController.view.centerXAnchor.constraint(equalTo:
parentViewController.view.centerXAnchor)
我该怎么做呢?
我曾尝试为 childViewController 设置一个框架,但这会弄乱 anchor 。
最佳答案
概览
下面给出的示例展示了如何执行以下操作:
- 添加一个 subview Controller
- 为 subview 设置约束(布局 anchor )
代码
private func showChildView() {
let childViewController = UIViewController()
let parentViewController = self
childViewController.view.backgroundColor = .brown
parentViewController.addChildViewController(childViewController)
let parentView = parentViewController.view!
let childView = childViewController.view!
//For programatically created view set the translatesAutoresizingMaskIntoConstraints = false
childView.translatesAutoresizingMaskIntoConstraints = false
parentView.addSubview(childView)
childView.centerXAnchor.constraint(equalTo: parentView.centerXAnchor).isActive = true
childView.centerYAnchor.constraint(equalTo: parentView.centerYAnchor).isActive = true
childView.widthAnchor.constraint(equalToConstant: 100).isActive = true
childView.heightAnchor.constraint(equalToConstant: 200).isActive = true
childViewController.didMove(toParentViewController: parentViewController)
}
进一步阅读:
- 请阅读有关 AutoLayout 的内容。引用 - https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/
- 当您使用自动布局时,您不能直接设置框架。
- Autolayout 就像一组规则/约束,因此框架将根据您设置的规则确定。
关于ios - 为具有 CenterX 约束的 View 设置自定义高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411658/