Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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
Ios 以编程方式使用StackView_Ios_Swift_Uiview_Uistackview - Fatal编程技术网

Ios 以编程方式使用StackView

Ios 以编程方式使用StackView,ios,swift,uiview,uistackview,Ios,Swift,Uiview,Uistackview,我已经创建了一个自定义的UIView,在视图内部,我正试图使用UIStackView添加一些UI元素 在IB内部,我添加了一个视图,然后将自定义类设置为我的自定义UIView UIStackView似乎不受我添加到的UIView的约束,相反,UIStackView似乎锚定到原点。此外,我只能在调试视图层次结构中看到它。它实际上没有显示任何标签或按钮,我只是看到一个灰色虚线框 这是我创建的自定义视图 import UIKit class ParameterControl: UIView {

我已经创建了一个自定义的
UIView
,在视图内部,我正试图使用
UIStackView
添加一些UI元素

在IB内部,我添加了一个视图,然后将自定义类设置为我的自定义UIView

UIStackView
似乎不受我添加到的
UIView
的约束,相反,
UIStackView
似乎锚定到原点。此外,我只能在调试视图层次结构中看到它。它实际上没有显示任何标签或按钮,我只是看到一个灰色虚线框

这是我创建的自定义视图

import UIKit

class ParameterControl: UIView {

private var name : UILabel!
private var valTf : UITextField!
private var delta : UITextField!
private var stepper : UIStepper!
private var button : UIButton!

init(frame: CGRect, albumCover: String) {
    super.init(frame: frame)
    commonInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    commonInit()
}

func commonInit(){

    name = UILabel()
    name.text = "Name"
    name.backgroundColor = UIColor.blue

    valTf = UITextField.init()
    delta = UITextField.init()
    stepper = UIStepper.init()
    button = UIButton.init()

    let stackView = UIStackView(arrangedSubviews: [valTf, delta, stepper, button])
    stackView.axis = .horizontal
    stackView.distribution = .fillEqually
    stackView.alignment = .fill
    stackView.spacing = 10
    stackView.translatesAutoresizingMaskIntoConstraints = false

    addSubview(stackView)

    //let viewsDictionary = ["stackView":stackView]
    //let stackView_H = NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[stackView]-20-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewsDictionary)
    //let stackView_V = NSLayoutConstraint.constraints(withVisualFormat: "V:|-30-[stackView]-30-|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: viewsDictionary)
    //self.addConstraints(stackView_H)
    //self.addConstraints(stackView_V)

}

}

我是否错误地使用了
UIStackView
?目标是能够创建这些视图的数组,每个视图对应一个参数。我不想在IB中单独创建这些视图。

取消对代码中的约束的注释,并确保它们在堆栈视图中被激活。它保持在它的默认位置和帧中,因为您没有给它任何约束,告诉它以其他方式运行。另外,确保所有元素都有一个有效的框架。

取消对代码中的约束的注释,并确保它们在堆栈视图中被激活。它保持在它的默认位置和帧中,因为您没有给它任何约束,告诉它以其他方式运行。另外,确保所有元素都有一个有效的框架。

您需要向堆栈视图添加约束以将其约束到其超级视图(自定义类中的self)您需要向堆栈视图添加约束以将其约束到其超级视图(自定义类中的self)