【问题标题】:iOS 8 GM does not update constraints on collection viewsiOS 8 GM 不更新集合视图的约束
【发布时间】:2014-09-09 20:52:56
【问题描述】:

在 Xcode 6 Beta 7 和之前的所有版本中,我有一个集合视图,当 iPad 在横向和纵向之间旋转时,它会更新其对单元格的约束。现在,它根本没有更新,实际上它看起来就像我将它留在 XIB 中的样子,这对我来说意味着它根本没有更新。看来我正在使用的可重用视图正在正确更新,但单元格肯定不是。

还有其他人遇到过这个问题吗?有人对如何克服它有任何想法吗?

我使用的是 iOS 7.1 模拟器。

【问题讨论】:

  • 这似乎在 8GM sim 上运行良好,因此问题似乎仅限于 7.1。我会检查 7.0 的 sim。
  • 我也在 7.1 设备和模拟器上看到它。 ios8模拟器正常工作
  • 已确认,这不适用于 iOS 7.1 或 7.0.3 SIM。它也无法在装有 iOS 7.1.2 的 iPad Air 上运行。

标签: ios cocoa-touch uicollectionview ios8 uiinterfaceorientation


【解决方案1】:

您需要创建 UICollectionViewCell 的子类,并将该子类作为所有单元格的超类。

例子:

@interface MDTCollectionViewCell : UICollectionViewCell
@end

@implementation MDTCollectionViewCell

- (void)setBounds:(CGRect)bounds {
    [super setBounds:bounds];
    self.contentView.frame = bounds;
}

@end

【讨论】:

  • 如果不想继承 UICollectionViewCell 也可以在返回单元格之前在方法 cellForItemAtIndexPath 上设置 contentView 框架
  • @pablobart 是的,这实际上是 Apple Dev Forums 中 cyphers72 建议的原始修复,但这个解决方案更适合我的用例 :)
  • 感谢您的解决方案。我有完全相同的问题。我现在临时使用 XCode 6 Beta 7。
  • 感谢您的解决方案...我遇到了同样的问题,并且试图弄清楚为什么仅在 iOS 7.1 上会发生这种情况感到沮丧。
  • 谢谢!你拯救了我的一天!
【解决方案2】:

覆盖自定义单元格的 layoutSubviews 作为临时修复:

override func layoutSubviews() {
    contentView.frame = bounds
    super.layoutSubviews()
}

【讨论】:

  • 这在 Xcode 6 上对我有用,使用 swift...有什么想法不使用它时会出现什么问题?
  • 当与 dispatch_async 混合并在 reloadData() 之后调用它时,这个对我来说实际上是有用的(我使用 CollectionView)
【解决方案3】:

我想出的解决方法是使用 8.0 模拟器在 sim 中进行测试,并使用 Xcode Beta 7 构建可部署。当我使用 Beta 7 构建时,应用程序在使用 iOS 7 的设备上运行时没有此问题。但是,这对部署到应用商店的任何人都没有帮助,因此如果此解决方法不适用于您的情况,我深表歉意。

【讨论】:

    【解决方案4】:

    在我添加的 UICollectionViewCell 类中

    override func layoutSubviews() {
        contentView.frame = bounds
        super.layoutSubviews()
    }
    

    我用这段代码刷新

    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        // in this case vController is UICollectionView
        self.vController.reloadData()
        self.vController.layoutSubviews()
    })
    

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多