Objective c 向ViewController次UIView添加约束
我有一个故事板设置,其中有一个对话框,利用了一个辅助UIView(屏幕截图中的黄色)。这是通过将UIView从对象库拖动到故事板上的第一响应器和出口之间来完成的 我不知道如何相对于superview向这个辅助UIView添加基本约束。右键单击并拖动不允许应用约束。这可能吗?我是否需要以编程方式处理所有自动布局/约束 我只需要添加前导/尾随的约束。高度将是固定的,但可能会根据屏幕大小进行相应调整Objective c 向ViewController次UIView添加约束,objective-c,swift,xcode,io,autolayout,Objective C,Swift,Xcode,Io,Autolayout,我有一个故事板设置,其中有一个对话框,利用了一个辅助UIView(屏幕截图中的黄色)。这是通过将UIView从对象库拖动到故事板上的第一响应器和出口之间来完成的 我不知道如何相对于superview向这个辅助UIView添加基本约束。右键单击并拖动不允许应用约束。这可能吗?我是否需要以编程方式处理所有自动布局/约束 我只需要添加前导/尾随的约束。高度将是固定的,但可能会根据屏幕大小进行相应调整 这个问题已经解决了。不能在这些视图上使用IB中的右键单击和拖动约束。为什么?因为它们还不是视图层次结构
这个问题已经解决了。不能在这些视图上使用IB中的右键单击和拖动约束。为什么?因为它们还不是视图层次结构的一部分!(愚蠢的我) 在我上面的黄色二级视图示例中,下面是如何使用VFL(可视化格式语言)将自动布局应用于它 在ViewDidLoad中,首先要关闭视图自动调整大小遮罩:
self.yellowSecondaryView.translatesAutoresizingMaskIntoConstraints = false
现在找到要添加子视图的位置。假设你使用一个按钮动作来触发它。。。在该动作中,首先添加视图(1),然后添加约束(2):
希望这有助于某人创建一个更易于管理和组织的故事板!:)
// 1
view.addSubview(yellowSecondaryView)
// Create a string representation of the view to use it with VFL.
let viewsDictionary: [String: UIView] = ["yellowSecondaryView": yellowSecondaryView]
//2
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-50-[yellowSecondaryView]-50-|", options: [], metrics: nil, views: viewsDictionary)) // Width of yellow view will be full width, minus 50 points from the LEFT and the RIGHT of the superview (|)
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[yellowSecondaryView(250)]", options: [], metrics: nil, views: viewsDictionary)) // Set a static height of 250 for the yellow view
view.addConstraint(NSLayoutConstraint(item: yellowSecondaryView, attribute: .centerY, relatedBy: NSLayoutRelation(rawValue: 0)!, toItem: view, attribute: .centerY, multiplier: 1, constant: 0)) // Center the view vertically in the superview. (credit to @rdelmar in this thread: http://stackoverflow.com/questions/21494039/using-autolayout-in-ib-how-do-i-position-a-uiview-in-the-center-of-the-screen-pr/21494707#21494707)