UICollectionViewCell 以编程方式自动布局
Posted
技术标签:
【中文标题】UICollectionViewCell 以编程方式自动布局【英文标题】:UICollectionViewCell Auto Layout Programmatically 【发布时间】:2016-06-26 17:05:53 【问题描述】:我正在尝试以编程方式创建一个UICollectionViewCell
子类。我正在尝试使用自动布局支持进行创建。
我想在单元格的内容视图中添加UIView
,并添加前导、顶部、尾随和底部约束。但是当我这样做时,我的 UIView's
宽度和高度保持为零。这是我在initWithFrame
方法中的代码:
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
_someView = [[UIView alloc] initWithFrame:CGRectZero];
_someView.translatesAutoresizingMaskIntoConstraints = NO;
[self.contentView addSubview:_someView];
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-2-[someView]-2-|" options:0 metrics:nil views:@@"someView" : _someView];
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-2-[someView]-2-|" options:0 metrics:nil views:@@"someView" : _someView];
[self.contentView addConstraints:horizontalConstraints];
[self.contentView addConstraints:verticalConstraints];
这是 UI 调试器的屏幕截图:
为什么这些约束是灰色的?
谢谢!
【问题讨论】:
您的所有约束是否都安装在您使用的任何大小类中?不确定可视化调试器,但 IB/Storyboards 灰色约束是项目中存在但未安装在编辑器显示的任何大小类组合中(默认为任意/任意) 您的控制台是否抛出任何布局警告?此外,在 contentView 上将translatesAutoresizingMaskintoConstraints
设置为 NO 可能会破坏单元格布局系统。尽量不要那样做。
@WarrenBurton 成功了!谢谢!!!!请作为答案回复,我会投票并批准!
【参考方案1】:
contentView
归 UICollectionViewCell
所有,因此执行此操作
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
破坏单元格中的布局。
对您拥有的任何子视图执行此操作并添加到内容视图是完全合理的,但弄乱您不拥有的视图可能会破坏布局。
【讨论】:
每次我做一个没有故事板的项目时都会忘记这一点,哈哈 :)以上是关于UICollectionViewCell 以编程方式自动布局的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式选择 UICollectionViewCell [关闭]
无法在 UICollectionViewCell 中锚定 UIImageVIew(以编程方式)
以编程方式在特定 UICollectionViewCell 内的 TableView?
以编程方式将 UILabel 添加到 UICollectionViewCell