我有一个场景,我有X标签(或按钮)。它们应出现在水平集合视图中。不应该是可滚动的。问题是标签/按钮的数量可以改变(0-5)。
完美的事情是对每个项目使用宽度相等的StackView,但我不能使用它,因为它需要iOS 9.(我也需要iOS 8.0的兼容性-.-)
所以我构建了一个集合视图,禁用了滚动并希望为我的单元格设置动态高度和宽度。
我得到了我的collectionView的高度/宽度
heightOfLabel = testModeLoginCollectionView.frame.height
widthOfLabel = testModeLoginCollectionView.frame.width /
CGFloat(array5.count)
结果是testModeLoginCollectionView.frame.width = 568.0 widthOflabel 113.6 array5 = 5个项目
我使用这种方法来调整我的细胞大小:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let c = CGSizeMake(heightOfLabel!, widthOfLabel!);
return c
}
他应该将单元格的大小设置为宽度113.6和33.0 但它看起来像这样:
我尝试使用Aspect Fit,Scale to Fill等,但它并没有发生太大变化。它太大或太小。
有人有想法吗?我也会使用另一种技术而不是集合View。
我什么时候将值存储在我的变量中?
override func viewDidLoad() {
testModeLoginCollectionView.delegate = self
testModeLoginCollectionView.dataSource = self
heightOfLabel = testModeLoginCollectionView.frame.height
widthOfLabel = testModeLoginCollectionView.frame.width / CGFloat(array5.count)
print("testModeLoginCollectionView.frame.width \(testModeLoginCollectionView.frame.width)")
print("widthOfLabel \(widthOfLabel)")
}
我在viewDidAppear中尝试过,但没有区别
答案 0 :(得分:1)
viewDidLayoutSubviews视图后有右框架。 所以你可以在viewDidLayoutSubviews中重新加载数据。 但我有另一种解决方案:你可以使用https://github.com/forkingdog/FDStackView 它有像uistackview一样的api