2014-10-16 31 views
2

Xcode接口生成器驱使我疯了,我花了大部分时间搜索解决方案。Xcode6接口生成器约束不能拉伸子视图

我有一个包含UIImageView的CollectionViewCell故事板。 CollectionViewCell大小为125 x 125,并检查Autoresize子视图。这个应该可以确保UIImageView的大小可以填充超级视图。这个UIImageView的超级视图(前导,尾随,顶部,底部)有4个约束。当CollectionViewCell缩小到较小尺寸时,UIImageView的尺寸正确,但当CollectionViewCell拉伸到较大尺寸时IT无法工作。

编辑:我已经尝试使用UILabel子视图和相同的事情发生相同。

这是一个已知的问题或有任何方法来调试约束?

谢谢

+0

尝试在imageview调用sizeview时调用sizeview(即在layoutSubviews) – 2014-10-16 13:55:09

+0

嗨,安娜,我已经尝试过(见下面的代码片段),但不幸的是仍然没有工作。 '@implementation DeckViewCell - (无效)layoutSubviews { \t [超级layoutSubviews]; \t [self.thumbnail sizeToFit]; \t [self.title sizeToFit]; }' – cridgit 2014-10-17 10:17:19

回答

1

我终于找到从http://www.nomtek.com/adjusting-your-app-to-ios-8/

解决问题的完整的解决方案首先,我必须确保我CollectionViewCell有自动调整子视图界面生成器中选中,然后我不得不添加以下awakeFromNib方法上ConnectionViewCell子。

- (void)awakeFromNib { [super awakeFromNib]; self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; }

有了这两样东西,我的细胞(UIImageView的和的UILabel)的内容被拉伸,即使正确使用sizeForItemAtIndexPath动态小区大小。

0

我已经取得了部分进展。

我使用sizeForItemAtIndexPath来动态设置单元大小。

如果我放弃该方法并在Interface Builder中设置CollectionView的FlowLayout的较大单元大小,它将按预期工作。这意味着约束和子视图的大小在编译时被更新。

我仍然很想知道如何在使用sizeForItemAtIndexPath时动态更新约束和子视图尺寸。有什么建议么?

+0

正如我一直在学习autolayout,我发现它最好的作品,如果你让它尽可能多。任何时候你手动设置一些东西,它只是有点放弃,结果变得不可预测。但是,当然,有些事情必须通过程序化来完成。在这种情况下,尝试通过修改约束来设置大小:例如,对需要调整大小的某些东西创建高度和宽度约束,并在视图控制器或自定义视图类中的updateConstraints期间修改它们。 (一个模糊的答案,但有更多的东西需要试验!) – 2014-10-17 13:42:41

+0

哦,并确保你设置translatesautoresizingmaskintoconstraints为false为一切。 – 2014-10-17 13:44:54