0

我试图弄清楚如何使用自动布局,但我发现了一个问题。我想在 IB 中创建一个大小为 200x200 的视图。这个视图,称为 PieView,有两个 UIImageViews 和框架 (0, 0, 200, 200),它们都适用。我的问题是,如何在代码(我喜欢视觉格式语言)或 IB 中覆盖 updateConstraints,如果我更改 PieView 的大小(例如更改为 100),子视图也会更改(0、0、100、100 )。

以及如何更改 PieView 的大小,我正在尝试宽度和高度

NSLayoutConstraint *width = [NSLayoutConstraint constraintWithItem:self
                                                         attribute:NSLayoutAttributeWidth
                                                         relatedBy:NSLayoutRelationEqual
                                                            toItem:nil
                                                         attribute:NSLayoutAttributeNotAnAttribute
                                                        multiplier:1.0f
                                                          constant:100.f];//kDiameter * sizeCoef];
4

2 回答 2

1

如果容器视图 (PieView) 的子视图相对于它们的容器正确定位/调整大小/固定,您需要做的就是更新容器视图 (PieView) 的宽度。

要在代码中更改视图的大小,您需要确保保留对视图宽度约束的引用(例如,在属性中)。因此,如果您在 Xcode 中添加了该约束,则意味着为该约束连接一个出口。或者,如果您在代码中添加它(如您在问题中所写),只需将约束分配给属性而不是局部变量。

然后,在 中,将约束updateConstraints的属性更改为新的宽度。constant这是一个例子:

- (void)updateConstraints
{
    // Probably want to wrap the below line with a check for when you should actually do this change, 
    // as updateConstraints may get called more than once (including when you aren't ready to change the width).
    self.widthConstraint.constant = 100.0f;
}

setNeedsUpdateConstraints然后,当您准备好更改其宽度时,只需调用视图!

于 2013-10-08T21:41:32.837 回答
0

我不确定您是否需要重新配置图像视图的高度或宽度约束。如果您希望图像视图随其父视图一起增长和缩小,那么只需将图像视图的侧面固定到 IB 中的父视图。您不需要覆盖 updateConstraints。

于 2013-10-08T22:24:52.873 回答