Swift UICollectionViewCell 根据内容调整大小
Swift UICollectionViewCell resize with content
我有一个关于 UICollectionViewCell 的问题,对于像我这样的新手来说真的很难。我需要你的帮助。
我正在写一本字典。我有一个搜索栏、一个集合视图、一些标签和一个文本视图。但是在显示搜索结果时,我无法调整集合视图单元格和文本视图的大小。
视图控制器:
import UIKit
class sozlukController: UIViewController, UISearchBarDelegate, UICollectionViewDataSource, UICollectionViewDelegate{
@IBOutlet var wordSearchBar: UISearchBar!
@IBOutlet var collection: UICollectionView!
var wordDataList = [String]()
var meaningDataList = [String]()
var dictionaryDataList = [String]()
var yearDataList = [String]()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLoad() {
super.viewDidLoad()
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
wordDataList = []
meaningDataList = []
dictionaryDataList = []
yearDataList = []
var word = searchBar.text
var parser:dictXMLParser = dictXMLParser()
var searchResults:[dictXMLResponse]=parser.beginParsing(1, searchType: 1, searchWord: word)
for result in searchResults {
wordDataList.append(result.word)
meaningDataList.append(result.meaning)
dictionaryDataList.append(result.dictionary)
yearDataList.append(result.year)
}
searchBar.resignFirstResponder()
searchBar.text=""
collection.reloadData()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return wordDataList.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell:meaningCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! meaningCollectionViewCell
cell.wordLabel.text = wordDataList[indexPath.row]
cell.meaningText.text = meaningDataList[indexPath.row]
cell.dictionaryLabel.text = dictionaryDataList[indexPath.row]
return cell
}
}
UICollectionViewCell:
import UIKit
class meaningCollectionViewCell: UICollectionViewCell , UITextViewDelegate{
@IBOutlet var wordLabel: UILabel!
@IBOutlet var meaningText: UITextView!
@IBOutlet var dictionaryLabel: UILabel!
override func layoutSubviews() {
super.layoutSubviews()
let fixedWidth = meaningText.frame.size.width
let newSize = meaningText.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
meaningText.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
}
}
当我在 "first" 的搜索栏中输入 "gamze" 时,由于文本视图高度的原因,我没有看到完整的意思。
令人惊讶的是,当我为第二次搜索写下同一个词时,文本视图高度增加并覆盖了以下标签。但是由于 UICollectionViewCell 的高度,我再次看不到全部含义。
我通过界面生成器设置了可滚动 "false" 和自动布局 "on"。
有没有一种方法可以在不覆盖任何标签的文本视图中显示含义,并根据其内容调整集合视图单元格的大小
我无法找到有关 swift 的资源。如果您能提供帮助,我将不胜感激。
我在 github 上找到了一个很好的解决方案。诀窍是为单元格内容创建 xib 文件
https://github.com/honghaoz/Dynamic-Collection-View-Cell-With-Auto-Layout-Demo
我有一个关于 UICollectionViewCell 的问题,对于像我这样的新手来说真的很难。我需要你的帮助。 我正在写一本字典。我有一个搜索栏、一个集合视图、一些标签和一个文本视图。但是在显示搜索结果时,我无法调整集合视图单元格和文本视图的大小。
视图控制器:
import UIKit
class sozlukController: UIViewController, UISearchBarDelegate, UICollectionViewDataSource, UICollectionViewDelegate{
@IBOutlet var wordSearchBar: UISearchBar!
@IBOutlet var collection: UICollectionView!
var wordDataList = [String]()
var meaningDataList = [String]()
var dictionaryDataList = [String]()
var yearDataList = [String]()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLoad() {
super.viewDidLoad()
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
wordDataList = []
meaningDataList = []
dictionaryDataList = []
yearDataList = []
var word = searchBar.text
var parser:dictXMLParser = dictXMLParser()
var searchResults:[dictXMLResponse]=parser.beginParsing(1, searchType: 1, searchWord: word)
for result in searchResults {
wordDataList.append(result.word)
meaningDataList.append(result.meaning)
dictionaryDataList.append(result.dictionary)
yearDataList.append(result.year)
}
searchBar.resignFirstResponder()
searchBar.text=""
collection.reloadData()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return wordDataList.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell:meaningCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! meaningCollectionViewCell
cell.wordLabel.text = wordDataList[indexPath.row]
cell.meaningText.text = meaningDataList[indexPath.row]
cell.dictionaryLabel.text = dictionaryDataList[indexPath.row]
return cell
}
}
UICollectionViewCell:
import UIKit
class meaningCollectionViewCell: UICollectionViewCell , UITextViewDelegate{
@IBOutlet var wordLabel: UILabel!
@IBOutlet var meaningText: UITextView!
@IBOutlet var dictionaryLabel: UILabel!
override func layoutSubviews() {
super.layoutSubviews()
let fixedWidth = meaningText.frame.size.width
let newSize = meaningText.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
meaningText.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
}
}
当我在 "first" 的搜索栏中输入 "gamze" 时,由于文本视图高度的原因,我没有看到完整的意思。
令人惊讶的是,当我为第二次搜索写下同一个词时,文本视图高度增加并覆盖了以下标签。但是由于 UICollectionViewCell 的高度,我再次看不到全部含义。
我通过界面生成器设置了可滚动 "false" 和自动布局 "on"。 有没有一种方法可以在不覆盖任何标签的文本视图中显示含义,并根据其内容调整集合视图单元格的大小
我无法找到有关 swift 的资源。如果您能提供帮助,我将不胜感激。
我在 github 上找到了一个很好的解决方案。诀窍是为单元格内容创建 xib 文件
https://github.com/honghaoz/Dynamic-Collection-View-Cell-With-Auto-Layout-Demo