UITableViewCell 中的 UICollectionView?
Posted
技术标签:
【中文标题】UITableViewCell 中的 UICollectionView?【英文标题】:UICollectionView in UITableViewCell? 【发布时间】:2016-06-01 01:22:38 【问题描述】:我必须构建一个自定义 UITableViewCell,但我不确定如何处理内容。指定的设计如下所示:
标签和边框什么的我都整理好了,但是考虑到内容是动态的,我不知道用什么来组织里面。
我已阅读有关 FlowLayout 的信息,但我不确定如何使用它,以及有关 UICollectionView 的信息,但集合视图所能提供的只是单元格内的水平滚动,这是一个不适合的功能我的需求。
你能给我一些关于如何实现这一点的建议吗?
【问题讨论】:
【参考方案1】:这是一个非常基本的 UICollectionView 实现,使用动态单元格大小。
class CollectionViewController: UICollectionViewController
@IBOutlet var myCollectionView: UICollectionView!
let tags = [
"Web Design",
"ADWE",
"Busisness functions",
"Comics",
"Web",
"News in the Middle East",
"Albanian",
"Possession of machetes",
"Nuclear physics",
"Cookery",
"Cross stitiching"
]
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
return 1
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return tags.count
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("dynamicCell", forIndexPath: indexPath)
cell.layer.borderColor = UIColor.grayColor().CGColor
cell.layer.borderWidth = 1.0
cell.layer.cornerRadius = cell.frame.height / 2.0
let tagLabel = cell.viewWithTag(100) as? UILabel
tagLabel?.text = tags[indexPath.row]
return cell
extension CollectionViewController: UICollectionViewDelegateFlowLayout
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
let tagLabel = UILabel()
tagLabel.text = tags[indexPath.row]
let size = tagLabel.intrinsicContentSize()
let cellSize = CGSizeMake(size.width + 40, size.height + 20) //added 40 to width to add space around label.
return cellSize
您必须根据需要在 sizeForItemAtIndexPath 方法中清理格式。
希望这会有所帮助!
【讨论】:
如果标签的顺序不重要的话,多想想这个,我会写一个排序函数来优化布局(并且可能做充分的理由)。以上是关于UITableViewCell 中的 UICollectionView?的主要内容,如果未能解决你的问题,请参考以下文章
collectionView:didSelectItemAtIndexPath:没有被调用
UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签
更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象
确定 UITableViewCell 中的 UIButton