Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 向ViewController次UIView添加约束_Objective C_Swift_Xcode_Io_Autolayout - Fatal编程技术网

Objective c 向ViewController次UIView添加约束

Objective c 向ViewController次UIView添加约束,objective-c,swift,xcode,io,autolayout,Objective C,Swift,Xcode,Io,Autolayout,我有一个故事板设置,其中有一个对话框,利用了一个辅助UIView(屏幕截图中的黄色)。这是通过将UIView从对象库拖动到故事板上的第一响应器和出口之间来完成的 我不知道如何相对于superview向这个辅助UIView添加基本约束。右键单击并拖动不允许应用约束。这可能吗?我是否需要以编程方式处理所有自动布局/约束 我只需要添加前导/尾随的约束。高度将是固定的,但可能会根据屏幕大小进行相应调整 这个问题已经解决了。不能在这些视图上使用IB中的右键单击和拖动约束。为什么?因为它们还不是视图层次结构

我有一个故事板设置,其中有一个对话框,利用了一个辅助UIView(屏幕截图中的黄色)。这是通过将UIView从对象库拖动到故事板上的第一响应器和出口之间来完成的

我不知道如何相对于superview向这个辅助UIView添加基本约束。右键单击并拖动不允许应用约束。这可能吗?我是否需要以编程方式处理所有自动布局/约束

我只需要添加前导/尾随的约束。高度将是固定的,但可能会根据屏幕大小进行相应调整


这个问题已经解决了。不能在这些视图上使用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)