【问题标题】:Auto Layout Constraint from UICollectionViewCell to View from ViewController从 UICollectionViewCell 到 ViewController 的自动布局约束
【发布时间】:2014-02-06 05:41:49
【问题描述】:

我有可以水平滚动的 UICollectionView。 我想将约束添加到从 ViewController 获取的主视图中。

因为这是 UICollectionView 的单元格而不是他的子视图,xcode 会报错层级错误。这样的事情怎么办?

编辑:

我想要它的目的或效果是这样的:

我有 UICollectionView 水平滚动。此集合视图的单元格是屏幕页面。在那个屏幕上是标签。 当用户滚动浏览集合视图中的页面时,我希望该标签将滚动到屏幕的左/右边缘并留在那里并随着另一个页面消失。类似于组表视图部分标题,但水平。

【问题讨论】:

  • 为什么要将单元格上的约束添加到集合视图的父视图中?这样做的目的是什么?
  • 好的,我会为此编辑我的问题。
  • 好像需要实现scroll view的delegate scrollViewDidScroll方法,根据scroll view的偏移量调整label的位置。
  • 我的解决方案是添加从标签到主视图的约束 - 左边等于优先级 900,从标签到页面视图的约束 - 右边更多或等于优先级 1000。但我不知道如何设置从标签到主视图的约束
  • 您不能对父视图之外的项目进行约束。由于您所指的标签在您的单元格内,因此您不能对集合视图的父级进行约束。

标签: ios xcode uicollectionview autolayout uicollectionviewcell


【解决方案1】:

感谢大家的回答,但对我没有任何帮助。 我所做的是创建 2 个约束:

cell.left equal label.left : priority 499
cell.right greateOrEqual label.right

我在滚动移动时保存了左约束:

- (void) scrollOffsetChange: (CGPoint) offset
{
    int x = abs(((int)offset.x%(int)self.frame.size.width));
    self.topLableLeftConstraint.constant = x;
    self.topLabels.alpha = 1 - (x/self.frame.size.width)*(x/self.frame.size.width);
    [self layoutIfNeeded];
}

我什至结束了消失效果。

【讨论】:

    【解决方案2】:

    与其尝试将这些标签作为单元格的一部分,不如将它们实现为补充视图——它们是UICollectionViewFlowLayout 用于其部分标题和页脚。

    您需要实现一些方法来提供视图本身以及它们的布局属性。以下是 Apple 文档中一些相关参考资料的链接:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CreatingCustomLayouts/CreatingCustomLayouts.html#//apple_ref/doc/uid/TP40012334-CH5-SW7

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多