我打算在某个位置将一个视图添加到我的集合视图中。因此我想使用装饰视图。现在这个位置应该每分钟都在变化。如何在iOS 7和iOS 8上使用UICollectionView
完成此操作?
似乎可以使用invalidateLayoutWithContext
完成此操作,但可以将多个UICollectionViewLayoutInvalidationContext
用于布局吗?
要为布局定义自定义失效上下文,请将其子类化 UICollectionViewLayoutInvalidationContext类。在你的子类中, 定义表示布局数据部分的自定义属性 可以独立重新计算。当你需要使你的无效时 在运行时布局,创建失效上下文的实例 子类,根据布局配置自定义属性 信息已更改,并将该对象传递给您的布局 invalidateLayoutWithContext:方法。你的自定义实现 该方法可以使用失效上下文中的信息 只重新计算您更改的布局部分。
如果为布局定义自定义失效上下文类 对象,您还应该覆盖invalidationContextClass方法 并返回您的自定义类。集合视图始终创建一个 需要失效时指定的类的实例 上下文。从此方法返回自定义子类可确保这一点 您的布局对象始终具有所需的失效上下文。
似乎只能使用一个失效上下文,因为您不知道何时返回invalidationContextClass
中的哪个上下文。
有些时候我需要使整个布局无效(例如方向更改),但我还需要更改装饰视图。
这可能吗?