【问题标题】:UICollectionViewCell Auto Layout ProgrammaticallyUICollectionViewCell 以编程方式自动布局
【发布时间】: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 成功了!谢谢!!!!请作为答案回复,我会投票并批准!

标签: ios objective-c autolayout uicollectionviewcell


【解决方案1】:

contentViewUICollectionViewCell 所有,因此执行此操作

self.contentView.translatesAutoresizingMaskIntoConstraints = NO;

破坏单元格中的布局。

对您拥有的任何子视图执行此操作并添加到内容视图是完全合理的,但弄乱您不拥有的视图可能会破坏布局。

【讨论】:

  • 每次我做一个没有故事板的项目时都会忘记这一点,哈哈 :)
猜你喜欢
  • 2016-12-14
  • 1970-01-01
  • 2016-03-16
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多