Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 Swift-UIView addConstraints不工作_Ios_Swift_Nslayoutconstraint - Fatal编程技术网

Ios Swift-UIView addConstraints不工作

Ios Swift-UIView addConstraints不工作,ios,swift,nslayoutconstraint,Ios,Swift,Nslayoutconstraint,我正在和斯威夫特玩,突然什么也没出现 override func viewDidLoad() { super.viewDidLoad() var DiabolicView: UIView = UIView();//With UIButton it's working DiabolicView.setTranslatesAutoresizingMaskIntoConstraints(false); DiabolicView.frame.size = CGSize(

我正在和斯威夫特玩,突然什么也没出现

override func viewDidLoad() {
    super.viewDidLoad()

    var DiabolicView: UIView = UIView();//With UIButton it's working
    DiabolicView.setTranslatesAutoresizingMaskIntoConstraints(false);
    DiabolicView.frame.size = CGSize(width: 67, height: 67)
    DiabolicView.backgroundColor = UIColor.redColor();//To see the view
    view.addSubview(DiabolicView);

    view.addConstraints([NSLayoutConstraint(item: DiabolicView,
        attribute: .Bottom,
        relatedBy: .Equal,
        toItem: view,
        attribute: .Bottom,
        multiplier: 1.0,
        constant: -100
    )]);
}
是的,真的没什么

但是当我用一个酷的UIButton替换邪恶的UIView时,红方块出现了:

所以,问题是,为什么我看不到UIView


提前感谢:)

使用
视图将出现()
而不是
视图加载()
来更新约束。

您缺少一件事,那就是恶魔般的UIView的x,y坐标。

您的约束与
UIButton一起工作,因为按钮有一个-它们可以决定它们想要的大小

另一方面,
UIView
。*您需要:

  • 添加约束以指定视图的大小,或
  • 子类
    UIView
    并重写
    intrinsicContentSize()
    以返回视图的默认大小
按您当前尝试的方式设置帧的大小不会剪切它-布局引擎将忽略此帧



*-此方法的默认实现返回
CGSizeMake(uiviewnointrisicmetric,uiviewnointrisicmetric)
,或
(-1,-1)
,这就是您根本看不到视图的原因。

多亏了Aaron Brager,我可以看到Reed Squaaare

import UIKit

class SweetView: UIView {
    override func intrinsicContentSize() -> CGSize {
        return CGSize(width: 67, height: 67);
    }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        var DiabolicView: SweetView = SweetView();
        DiabolicView.setTranslatesAutoresizingMaskIntoConstraints(false);
        DiabolicView.backgroundColor = UIColor.redColor();//To see the view
        view.addSubview(DiabolicView);

        view.addConstraints([NSLayoutConstraint(item: DiabolicView,
            attribute: .Bottom,
            relatedBy: .Equal,
            toItem: view,
            attribute: .Bottom,
            multiplier: 1.0,
            constant: -100
        )]);
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

谢谢D

谢谢,但没有红色方块:'(尝试此视图。layoutifneed(),但在视图中执行此操作。请将自动重新设计任务转换为约束