- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过使用 UICollectionViewDelegateFlowLayout
为我的 collectionView
的每一行自定义很多布局大小,如下所示:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = view.frame.width
if indexPath.row == 0 {
return CGSize(width: width, height: 300)
}else if indexPath.row == 1 {
return dynamicSize // i want this size wrap its content
}
return CGSize(width: width, height:100)
}
我想要 dynamicSize 可以将其内容包装在某行中。有人知道怎么做吗?
这是我想要动态大小包裹它的单元格图像。
最佳答案
我建议您使用 tableview 而不是 collectionview。这对你来说很容易。
对于 cellForHeight
返回 UITableViewAutomaticDimension
。它将自行计算您的单元格高度并相应地进行调整。
注意:确保您的约束是正确的。
Edit: By using collectionview with two columns.
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var text = "Do any additional setup after loading the view, typically from a nib."
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets{
return UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{
let cellWidth = self.view.frame.size.width/2 - 10
let textHeight = text.height(withConstrainedWidth: cellWidth, font: UIFont.systemFont(ofSize: 16))
let constantHeight : CGFloat = 40 + 25 + 10 // top name view + bottom like button + margins height
let totHeight = constantHeight + textHeight
return CGSize(width: cellWidth, height: totHeight)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCollectionViewCell", for: indexPath) as! MyCollectionViewCell
cell.label.text = text
cell.layer.borderWidth = 1.0
cell.layer.borderColor = UIColor.black.cgColor
return cell
}
}
extension String {
func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: font], context: nil)
return ceil(boundingBox.height)
}
func width(withConstrainedHeight height: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: .greatestFiniteMagnitude, height: height)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: font], context: nil)
return ceil(boundingBox.width)
}
}
输出:
关于swift - CollectionViewLayout 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49934335/
我有一个 UICollectionViewController 管理一个 Collection View ,该 Collection View 针对不同的应用程序状态使用不同的布局。我正在使用 -se
我目前正在开发一种功能,可以在 UICollectionView 的 2 个不同 CollectionViewLayouts 之间进行切换。切换工作得很好,布局使用相同的单元类别和不同的 Nib 。我
我想通过使用 UICollectionViewDelegateFlowLayout 为我的 collectionView 的每一行自定义很多布局大小,如下所示: func collectionView
我在 TableView 中有一个动态 collectionView,当我添加 invalidateLayout 时出现错误(图片如下)但是如果我删除 invalidateLayout 前四个单元格被
我在 oneView Controller 中有六个 UICollectionView,取决于用户选择的状态,我想重新加载集合数据。我的收藏 View 应该是水平滚动方向,动态大小单元格。有我的 se
根据UICollectionView和UICollectionViewLayout的类引用,UICollectionView持有对其collectionViewLayout属性的强引用,UIColle
是否可以在故事板中将 CollectionViewFlowLayout 更改为 CollectionViewLayout,因为我需要在示例中实现水流或 Pinterest 布局 RFQuiltLa
我尝试按照此解决方案 (How to determine height of UICollectionView with FlowLayout) 来确定我的 UICollectionViewLayou
所以很有趣,我正在尝试使用 collectionViewLayout sizeForItemAtIndexPath 在 collectionView 中一次只显示一个项目并水平滚动,我试过这个: -
我有一个 UICollectionViewLayout 子类,其中包含一个包含多行 UILabel 的补充 View 。问题是并非所有文本在某个点都是可见的,我怎样才能让补充 View 的高度等于它的
我已经实现了 UICollectionView 并且它可以使用下面的示例水平和垂直滚动粘性行和列: Example Github 应用程序可以在 Swift2 上找到,但升级后 Swift3 Cust
我在获取ListCollectionViewLayout(IGListKit 提供的库存布局)与Texture(以前称为AsyncDisplayKit)一起使用时遇到了麻烦。 这是我的 Collect
我在尝试将 View 更改为 Collection View 时遇到错误 error Argument Labels '(collectionviewlayout:)' do not match an
我开始尝试自定义 UICollectionView 布局。我的 UIViewController 中有一个 UICollectionView,它符合 UICollectionViewDataSourc
我有一个 UICollectionView ,我想动态应用两个不同的布局。 UICollectionViewFlowLayout:具有相同大小的单元格和圆形图像的布局。 var flowLayout:
我创建了一个自定义 collectionViewLayout,它根据设备屏幕大小按比例缩放单元格。包含在单元格中的所有图像似乎都被拉伸(stretch)了。我试过使用 aspectFit 和 aspe
在 collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayo
我想要做的是在选中此单元格时在 UICollectionViewCell 中显示一个 UICollectionView。我想用 rbcollectionviewinfofolderlayout展开我的
在 Swift 1.1 及之前的版本中,这是合法的: let layout = UICollectionViewLayout() class MyDynamicAnimator : UIDynamic
我是一名优秀的程序员,十分优秀!