0

我在 nib 文件中有两个UILabels和一个。UIView这个笔尖是我的collectionView. 在我的viewForSupplementaryElementOfKind:方法中,我需要更改这三个对象的框架。它们正在根据header.personCollege标签的大小进行更改。

[header.personCollege sizeToFit];
CGRect boxFrame = header.boxView.frame;
boxFrame.origin.x = header.personCollege.frame.origin.x + header.personCollege.frame.size.width + 11;
header.boxView.frame = boxFrame;

CGRect yearFrame = header.personYear.frame;
yearFrame.origin.x = boxFrame.origin.x + boxFrame.size.width + 11;
header.personYear.frame = yearFrame;

[header.personYear setNeedsDisplay];
[header.personCollege setNeedsDisplay];
[header.boxView setNeedsDisplay];

问题是setNeedsDisplay不改变框架。框架仅在调用 后更改reloadData。我需要立即改变框架。我也在使用自动布局。

4

1 回答 1

3

由于您使用的是 AutoLayout,因此您应该更改与视图关联的约束的“常量”值,而不是直接更改它们的框架。

您可以首先为要更改的约束创建一个 IBOutlets/IBOutletCollection,然后使用这些 IBoutlet,您可以更改它们的“常量”值。

于 2015-06-26T03:50:14.510 回答