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(),但在视图中执行此操作。请将自动重新设计任务转换为约束