2016-11-26 3 views
1

私はカスタムUIViewを作成しました。ビューの内側には、UIStackViewを使用していくつかのUI要素を追加しようとしています。stackviewsをプログラムで使用する

IBの内部ビューを追加してカスタムクラスをカスタムUIViewに設定しました。

UIStackViewはに追加されているようではなく、代わりにUIStackViewが原点に固定されているように見えます。また、デバッグビューの階層でしか見ることができません。それは実際にlablesやボタンのいずれかを示していない、私はちょうど破線の灰色のボックスが表示されます。私は間違ってUIStackViewを使用しています。ここ

enter image description here

enter image description hereは私が

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) 

} 

} 

を作成したカスタムビューのですか?目的は、これらのビューの配列を自分の各パラメータに1つずつ作成できるようにすることです。私はIBでこれらのビューを個別に作成したくありません。

+0

スタックビューに制約を追加してスーパービューに制約する必要があります(カスタムクラスでは自己) – Paulw11

答えて

0

コード内の制約のコメントを解除し、それらがスタックビューでアクティブになっていることを確認します。そうでなければ動作するように指示する制約が与えられていないため、デフォルトの位置とフレームにとどまっています。また、すべての要素に有効なフレームがあることを確認してください。

関連する問題