swift - Swift - UIScrollView 内的 UICollectionView - 自动布局
问题描述
我有一个滚动视图,它有一个containerView,我在上面放置了多个 UI 组件,例如标签、按钮等。
/* START SCROLL VIEW */
scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
addSubview(scrollView)
scrollView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: frame.width * (22 / IPHONE8_SCREEN_WIDTH)).isActive = true
scrollView.widthAnchor.constraint(equalToConstant: frame.width * (331 / IPHONE8_SCREEN_WIDTH)).isActive = true
scrollView.topAnchor.constraint(equalTo:self.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
/* END SCROLL VIEW */
/* START CONTAINER VIEW */
containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(containerView)
containerView.leadingAnchor.constraint(equalTo: self.scrollView.leadingAnchor).isActive = true
containerView.widthAnchor.constraint(equalTo: self.scrollView.widthAnchor).isActive = true
containerView.topAnchor.constraint(equalTo: self.scrollView.topAnchor).isActive = true
containerView.bottomAnchor.constraint(equalTo: self.scrollView.bottomAnchor).isActive = true
containerView.heightAnchor.constraint(equalTo: self.heightAnchor).priority = .defaultLow
containerView.widthAnchor.constraint(equalTo: self.widthAnchor).priority = .defaultLow
containerView.layer.borderColor = UIColor.black.cgColor
containerView.layer.borderWidth = 2
/* END CONTAINER VIEW */
...
/* START INVITED USERS COLLECTION VIEW */
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
inviteUsersCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
inviteUsersCollectionView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(inviteUsersCollectionView)
inviteUsersCollectionView.delegate = self
inviteUsersCollectionView.dataSource = self
inviteUsersCollectionView.register(InviteUsersCollectionViewCell.self, forCellWithReuseIdentifier: InviteUsersCollectionViewCell.reuseIdentifier)
inviteUsersCollectionView.backgroundColor = UIColor.red
inviteUsersCollectionView.layer.borderWidth = 2
inviteUsersCollectionView.layer.borderColor = UIColor.red.cgColor
inviteUsersCollectionView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: frame.width * (34 / IPHONE8_SCREEN_WIDTH)).isActive = true
inviteUsersCollectionView.widthAnchor.constraint(equalToConstant: frame.width * (309 / IPHONE8_SCREEN_WIDTH)).isActive = true
inviteUsersCollectionView.topAnchor.constraint(equalTo: inviteUsersLabel.bottomAnchor, constant: frame.height * (27 / IPHONE8_SCREEN_HEIGHT)).isActive = true
inviteUsersCollectionView.bottomAnchor.constraint(equalTo:containerView.bottomAnchor, constant: -95).isActive = true
/* END INVITED USERS COLLECTION VIEW */
}
我的containerView中的最后一个子视图是UICollectionView。我可以看到底部有一个空白区域,但是没有显示inviteUsersCollectionView 。
我需要改变什么?
解决方案
想办法。关于我的收藏视图的约束,缺少一行
inviteUsersCollectionView.leadingAnchor.constraint(equalTo: titleLabel.leadingAnchor).isActive = true
inviteUsersCollectionView.widthAnchor.constraint(equalToConstant: frame.width * (309 / IPHONE8_SCREEN_WIDTH)).isActive = true
inviteUsersCollectionView.topAnchor.constraint(equalTo: inviteUsersLabel.bottomAnchor, constant: frame.height * (27 / IPHONE8_SCREEN_HEIGHT)).isActive = true
inviteUsersCollectionView.heightAnchor.constraint(equalToConstant: 95).isActive = true // was missing
inviteUsersCollectionView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor, constant: -5).isActive = true
未设置heightAnchor 。
inviteUsersCollectionView.heightAnchor.constraint(equalToConstant: 95).isActive = true
推荐阅读
- javascript - createOrder 后的 Paypal 结帐 redirectUrl
- java - 使用 oracle 12c 第 2 版缓存结果集
- sql-server - 从选择更新中的动态列名
- php - 在 Woocommerce 商店页面上显示每个产品的修改日期
- java - 用 var-args 覆盖字符串
- java - 使用 java 反射运行时,HDFS Parquet 文件阅读器抛出 DistributedFileSystem.class 未找到
- django - 芹菜任务工作者未在生产中更新
- php - 循环不适用于关联数组 Php
- ios - Swift:iOS 12.2 应用程序在启动时崩溃
- javascript - 如何使用新的 while 语句扩展 Javascript