在运行时设置 UICollectionView 框架
Setting UICollectionView frame at runtime
我正在尝试在运行时设置 UICollectionView
的框架。
我尝试使用
mainCollectionView.frame = CGRect(x: 20, y: 20, width: self.view.frame.width-20, height: self.view.frame.width-20)
在我的 viewDidLoad
中,但不幸的是,它将始终保持在 IB
中。
我还没有使用 constraints
.
否则调整我的单元格大小在 cellForItem
:
中有效
collectionCell.frame.size.width = self.view.frame.width/8 * 3
你写错了高度,因为你把宽度设置成了高度。
试试不带导航栏的这一行:
mainCollectionView.frame = CGRect(x: 20, y: 20, width: UIScreen.mainScreen().bounds.size.width - (20 * 2), height: UIScreen.mainScreen().bounds.size.height - (20 * 2))
尝试在viewDidLayoutSubviews
中设置框架
运行 LayoutSubviews 覆盖之一中的以下内容。这将告诉集合视图更新其框架。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
mainCollectionView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
mainCollectionView.collectionViewLayout.invalidateLayout()
}
我正在尝试在运行时设置 UICollectionView
的框架。
我尝试使用
mainCollectionView.frame = CGRect(x: 20, y: 20, width: self.view.frame.width-20, height: self.view.frame.width-20)
在我的 viewDidLoad
中,但不幸的是,它将始终保持在 IB
中。
我还没有使用 constraints
.
否则调整我的单元格大小在 cellForItem
:
collectionCell.frame.size.width = self.view.frame.width/8 * 3
你写错了高度,因为你把宽度设置成了高度。
试试不带导航栏的这一行:
mainCollectionView.frame = CGRect(x: 20, y: 20, width: UIScreen.mainScreen().bounds.size.width - (20 * 2), height: UIScreen.mainScreen().bounds.size.height - (20 * 2))
尝试在viewDidLayoutSubviews
运行 LayoutSubviews 覆盖之一中的以下内容。这将告诉集合视图更新其框架。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
mainCollectionView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
mainCollectionView.collectionViewLayout.invalidateLayout()
}