Xcode 6 Autolayout子视图约束

时间:2014-10-17 16:41:41

标签: objective-c xcode ios8 autolayout nslayoutconstraint

这是我的故事板。

xcode 6 storyboard

因此,您可以看到我将主视图背景设置为灰色以进行调试。在里面我有一个视图我称之为'图形视图',它当前就像一个图表的布局指南/容器(子类UIView)。我已经对图表视图进行了约束,因此它(或多或少)居中并且具有可变的宽度/高度,具体取决于设备,在助理编辑器中可以看到如下:

assistant editor in storyboard preview mode

我使用图表视图bounds.heightbounds.width初始化图表,但这将是界面构建器中的大小,即568x500。 在我初始化并配置我想要添加到图表视图的图表后,我有以下代码 试图给我的图表子视图提供与图表视图“指南”相同的布局/视觉属性:

lineChart.backgroundColor = [UIColor clearColor];
lineChart.translatesAutoresizingMaskIntoConstraints = NO;

[self.graphView addSubview:lineChart];

NSLayoutConstraint *width =[NSLayoutConstraint
                            constraintWithItem:lineChart
                            attribute:NSLayoutAttributeWidth
                            relatedBy:NSLayoutRelationEqual
                            toItem:self.graphView
                            attribute:NSLayoutAttributeWidth
                            multiplier:1.0
                            constant:1];
NSLayoutConstraint *height =[NSLayoutConstraint
                            constraintWithItem:lineChart
                            attribute:NSLayoutAttributeHeight
                            relatedBy:NSLayoutRelationEqual
                            toItem:self.graphView
                            attribute:NSLayoutAttributeHeight
                            multiplier:1.0
                            constant:1];
NSLayoutConstraint *top = [NSLayoutConstraint
                           constraintWithItem:lineChart
                           attribute:NSLayoutAttributeTop
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.graphView
                           attribute:NSLayoutAttributeTop
                           multiplier:1.0f
                           constant:0.f];
NSLayoutConstraint *leading = [NSLayoutConstraint
                               constraintWithItem:lineChart
                               attribute:NSLayoutAttributeLeading
                               relatedBy:NSLayoutRelationEqual
                               toItem:self.graphView
                               attribute:NSLayoutAttributeLeading
                               multiplier:1.0f
                               constant:0.f];

[self.graphView addConstraint:width];
[self.graphView addConstraint:height];
[self.graphView addConstraint:top];
[self.graphView addConstraint:leading];

[self.graphView layoutIfNeeded];
[lineChart layoutIfNeeded];

[lineChart strokeChart];

iPhone 5s和iPad Air的结果如下 iPhone 5s Rendering

iPad Air Rendering

我希望图表能够完全填满其容器的空间..在iPad中展开,在5s时缩小。 知道我的代码有什么问题吗?

感谢您的帮助!

修改 分别从Debug View Hierarchy iPhone 5s和iPad Air输出。 Output from Debug View Hierarchy iPhone 5s Output form Debug View Hierarchy iPad Air

0 个答案:

没有答案