所以,我有以下XIB
当作为tableviewcell加载时,此XIB看起来像这样
我决定不需要TableView,所以我将我的XIB类从UITableViewCell更改为UIView。在ViewController中,我将此代码添加到viewDidLoad()
var nView = MyChartView.instanceFromNib() as! MyChartView
self.view.addSubview(nView)
我得到了这个结果
正如您所看到的,它忽略了边距并继续向右侧(忽略红色,因为我使用它来尝试调试问题。没有图表数据也不是问题)。我已经打印了xib的框架宽度,我发现它比屏幕尺寸大得多,但我还是无法解决它。任何人都可以找出问题吗?
答案 0 :(得分:3)
以编程方式添加子视图时,还应在subView及其superView
之间添加约束var nView = MyChartView.instanceFromNib() as! MyChartView
self.view.addSubview(nView)
nView.translatesAutoresizingMaskIntoConstraints = false
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[nView]|", options: [], metrics: nil, views: ["nView": nView]))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[nView]|", options: [], metrics: nil, views: ["nView": nView]))
答案 1 :(得分:1)
您还没有约束MyChartView
实例的宽度,可以通过在添加子视图时指定确切的大小,也可以在MyChartView
实例及其superview之间以编程方式添加约束。如果不执行其中一个操作,视图的尺寸将与xib中的任何尺寸相匹配。