2017-06-19 2 views
1

プログラムで制約付きのボタンを作成しました。しかし、ボタンが間違った位置に移動しました(右下)。何が間違っていたのですか?プログラムで制約を作成するとうまく動作しませんでした

item = UIButton(type: .custom) 
    item.setImage(image, for: .normal) 
    item.addTarget(self, action: #selector(PlayController.itemAct(sender:)), for: .touchUpInside) 
    item.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(item) 

    // Constraints 
    item.widthAnchor.constraint(equalToConstant: 30).isActive = true 
    item.heightAnchor.constraint(equalToConstant: 30).isActive = true 
    item.topAnchor.constraint(equalTo: view.topAnchor, constant: 441).isActive = true 
    item.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 123).isActive = true 
    item.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 222).isActive = true 
    item.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 196).isActive = true 

編集:

あなたはitem.trailingAnchoritem.bottomAnchorに左、右、上、あなたが設定する必要があります下のマイナスの値を作成したい場合は、私のために動作します。

+1

あなたはそれを拘束しています。幅と高さを設定した後は、先頭の制約と先行する制約を設定すれば十分です。幅と高さを設定したときに、左右両方から拘束したり、上下から拘束したりしないでください。 – vacawama

+0

申し訳ありません。 – Sebastian

答えて

0

ここには、さまざまな方法があるため、制約を使用したコードの例があります。ここでは私より好きな方法の一つである:

containerView.addConstraints([ 
     NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.left, relatedBy: NSLayoutRelation.equal, toItem: containerView, attribute: NSLayoutAttribute.left, multiplier: 1, constant: 0), 
     NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: containerView, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0), 
     NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.bottom, relatedBy: NSLayoutRelation.equal, toItem: containerView, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0), 
     NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.right, relatedBy: NSLayoutRelation.equal, toItem: containerView, attribute: NSLayoutAttribute.right, multiplier: 1, constant: 0) 
     ]) 

また、あなたはあなたのようにそれを行う場合は、あなただけたく左/右/トップを追加することに注意してくださいあなたは、コンテナビュー

に制約を追加ことを確認してください/ bottomまたはtop/left/width/height。あなたは最大で4つしか必要としません(通常)

関連する問題