Ios 嵌套集合视图单元格在方向更改时不调整大小
外部集合视图(在ViewController文件中)Ios 嵌套集合视图单元格在方向更改时不调整大小,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,外部集合视图(在ViewController文件中) 占据整个屏幕的宽度和高度 单元格还占据屏幕的整个宽度和高度 集合视图布局是水平的。能够滑动到下一个单元格 细胞的背景是绿色的 嵌套集合视图(在CollectionViewCell文件中) 占据屏幕的整个宽度和高度 单元格占据屏幕的整个宽度。身高是100, 细胞紫背景 问题 我首先在Xcode中的模拟器上以纵向方向运行应用程序 当我将方向更改为横向并滑动所有屏幕时 一个屏幕上的紫色单元格不会占据整个屏幕。这个问题只发生
- 占据整个屏幕的宽度和高度
- 单元格还占据屏幕的整个宽度和高度
- 集合视图布局是水平的。能够滑动到下一个单元格
- 细胞的背景是绿色的
- 占据屏幕的整个宽度和高度
- 单元格占据屏幕的整个宽度。身高是100,
- 细胞紫背景
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow()
window?.makeKeyAndVisible()
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
window?.rootViewController = ViewController(collectionViewLayout: layout)
return true
}
}
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow()
window?.makeKeyAndVisible()
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
window?.rootViewController = ViewController(collectionViewLayout: layout)
return true
}
}
视图控制器
import UIKit
class ViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.register(CollectionViewCell.self, forCellWithReuseIdentifier: "cellid")
collectionView?.isPagingEnabled = true
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellid", for: indexPath) as! CollectionViewCell
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.width, height: view.frame.height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
collectionViewLayout.invalidateLayout()
}
}
集合视图单元格(具有嵌套集合视图)
内部单元格(嵌套集合视图的单元格)
我在github上有这个项目
嘿,看看这个,看看是否有用
import UIKit
class InnerCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .purple
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
collectionViewLayout.invalidateLayout()
// Also try reloading your collection view to calculate the new constraints
DispatchQueue.main.async{
collectionView.reloadData()
}
}