我有一个已经设置好的UICollectionView,一切都很正常(选择、标题等),但是在某些情况下我想改变滚动方向。
简而言之,如果我进入故事板并更改scrollDirection,则一切正常,但我想通过编程方式完成它!
我尝试直接更改集合视图的滚动方向:
[myCollectionView setScrollDirection:....and so on.......
但这并不起作用,我在那里找不到scrollDirection或类似的东西。
我还尝试设置流式布局,但我确信我的做法是错误的(即尝试将ViewLayout设置为FlowLayout)。 UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[myCollectionView setCollectionViewLayout:flowLayout];
这会导致很多约束问题而且我怀疑我需要在flowLayout上做更多的工作(从我发现的情况来看,它超出了我的能力范围)。
还应该注意到我正在使用自定义单元格、标题和页脚。
简而言之,有没有一种简单的方法来解决这个问题?或者有没有人知道一个好的流布局教程?
修改
我设置集合视图如下;
[myCollectionView setDataSource:self];
[myCollectionView setDelegate:self];
我实现了这些委托方法,一切都正常工作。
viewForSupplementaryElementOfKind
numberOfSectionsInCollectionView
numberOfItemsInSection
cellForItemAtIndexPath
didSelectItemAtIndexPath
我已经将DataSource和Delegate添加到.h文件中,还添加了FlowLayout delegate,但是我不确定后者还需要添加什么。
大部分的视觉布局都在Story Board中完成,有一些诸如字体、大小和颜色等内容需要通过编程来完成。
另一个编辑
当我尝试更改FlowLayout时出现了这个错误,当我尝试使布局失效时也会出现这个错误。
无法同时满足约束条件。可能以下列表中至少有一个约束条件不符合您的意愿。请尝试:(1)查看每个约束条件,找出不符合预期的约束条件;(2)找到添加不需要的约束条件的代码并进行修复。(注意:如果您看到了一些您不理解的NSAutoresizingMaskLayoutConstraints,请参考UIView属性translatesAutoresizingMaskIntoConstraints的文档)
"<NSAutoresizingMaskLayoutConstraint:0x89967f0 h=--& v=--& V:[menuCell:0x8991700(50)]>",
"<NSLayoutConstraint:0x8991200 menuCell:0x8991700.bottom == UILabel:0x8992be0.bottom + 100>",
"<NSLayoutConstraint:0x898fd50 UILabel:0x8992be0.top == menuCell:0x8991700.top + 3>"
将尝试通过打破约束来进行恢复
在调试器中使用objc_exception_throw中断以捕获此异常。 UIView中UIConstraintBasedLayoutDebugging类别中列出的方法也可能有所帮助。