1

我有一个 UICollectionView 和一个包含子视图的自定义 UICollectionViewCell。我正在这个 CollectionViewCell 中做一些“深奥”的事情,并希望通过手动使用 setFrame 重新排列所有子视图。如何覆盖所有自动布局行为?

我试图覆盖“-(void) layoutSubviews”并绘制矩形。有时这有效,有时无效。

如果我通过使用得到一个单元格

UIMyCell *cell = (UIMyCell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"UIMyCell" forIndexPath:indexPath];

我得到了我的自定义单元格。我可以分配自定义属性,一切都很好。但是这个单元格的框架最初是 (0, 0, 0, 0)。

稍后将设置布局。如果子系统正在设置大小,我希望得到“通知”。

然后我想设置所有没有自动布局的子视图框架。

这里的最佳做法是什么?

4

1 回答 1

2

最后我找到了答案。在 OS X (NSView) 上

 -(void) setFrame:(CGRect)frame

将在更新所有约束以设置新的视图位置和大小后调用。在 iOS 上 (UIView)

-(void) setCenter:(CGPoint)center
and
-(void)setBounds:(CGRect)bounds 

将被调用。所以覆盖 setFrame 不适用于 iOS 框架。

于 2013-01-30T11:29:57.720 回答