2016-10-28 3 views
1

レイアウトアンカーを使用してスーパービューの画面全体をカバーすることは可能ですか? NSLayoutConstraintsを使用してプログラム上の制約 - レイアウトアンカーを使用してスーパービュー全体をカバーする

、私は

dimmingView = UIView() 
dimmingView.translatesAutoresizingMaskIntoConstraints = false 
dimmingView.backgroundColor = UIColor(white: 0.0, alpha: 0.5) 

containerView?.addSubview(dimmingView) 

NSLayoutConstraint(item: containerView!, attribute: .leadingMargin, relatedBy: .equal, toItem: dimmingView, attribute: .leadingMargin, multiplier: 1, constant: 0).isActive = true 
NSLayoutConstraint(item: containerView!, attribute: .trailingMargin, relatedBy: .equal, toItem: dimmingView, attribute: .trailingMargin, multiplier: 1, constant: 0).isActive = true 
NSLayoutConstraint(item: containerView!, attribute: .topMargin, relatedBy: .equal, toItem: dimmingView, attribute: .topMargin, multiplier: 1, constant: 0).isActive = true 
NSLayoutConstraint(item: containerView!, attribute: .bottomMargin, relatedBy: .equal, toItem: dimmingView, attribute: .bottomMargin, multiplier: 1, constant: 0).isActive = true 

以下のコードを使用してこの効果を得ることができ、私はdocsに提案しているもの、以下、代わりにレイアウトアンカーに切り替えたいです。

let margins = containerView?.layoutMarginsGuide 

dimmingView.heightAnchor.constraint(equalTo: margins.heightAnchor).isActive = true 
dimmingView.widthAnchor.constraint(equalTo: margins.widthAnchor).isActive = true 
dimmingView.centerXAnchor.constraint(equalTo: margins.centerXAnchor).isActive = true 
dimmingView.centerYAnchor.constraint(equalTo: margins.centerYAnchor).isActive = true 

let margins = containerView?.layoutMarginsGuide 

dimmingView.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true 
dimmingView.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true 
dimmingView.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true 
dimmingView.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true 

またはこれをどちらも動作しませんでした:私はこれをやってみました。私はコンテナビューを完全に覆う代わりに、4面すべてでパディングを行います。あなたはマージンと余白に制約されている

enter image description here

答えて

2

は、あなたが見た空間です。代わりにスーパービューに制限:

dimmingView.heightAnchor.constraint(equalTo: dimmingView.superview!.heightAnchor).isActive = true 
    dimmingView.widthAnchor.constraint(equalTo: dimmingView.superview!.widthAnchor).isActive = true 
    dimmingView.centerXAnchor.constraint(equalTo: dimmingView.superview!.centerXAnchor).isActive = true 
    dimmingView.centerYAnchor.constraint(equalTo: dimmingView.superview!.centerYAnchor).isActive = true 
0

代わりに対応する.xxxMargin属性の属性.leading.trailing.top.bottomを使用する必要があります。彼らはスーパービューの境界に沿ってサブビューを配置します。

関連する問題