您好我正在尝试使用自定义单元格创建表格视图。制作它的主要目标是我按照标签高度的比例调整tableview单元格的高度,标签高度由文本大小改变。当我用下面的代码运行我的应用程序时,它看起来很顺利。但是getStringHeight方法有时无法识别单元格的行。即使行数只有一个,该方法也会分配两行单元,这会使单元格成为不必要的空间。
我认为如果它会识别两行,则行超过3/4,在一行中填充文本。我想我使用Apple SD Gothic(Family)中包含的韩文字体。但我可以在UIFont中输入确切的名称(名称:“”,大小:),因为它无法识别它。
你能帮帮我吗?这是非常重要的项目。我熬夜了,但我没有想出解决这个问题的想法。 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
let rowNum = downloadedContents!.count - indexPath.row - 1
let sizeFactory = UINib(nibName: "DownLoadPlayViewControllerCell", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as? DownLoadPlayViewControllerCell
sizeFactory!.frame.size.height = 300
var bounds = CGSize(width: tableView.bounds.width, height: 78.5)
let pod = self.pods[rowNum]
if(sizeFactory != nil)
{
let top = sizeFactory?.programLabel.frame
let bottom = sizeFactory?.dateFilesizeLabel.frame
var labelSize = getStringHeight(pod.contentTitle!, fontSize: 13.0, width: sizeFactory!.titleLabel.frame.width)
let totalCellHeight = labelSize + top!.height + bottom!.height + 28.0
bounds.height = totalCellHeight
}
return bounds.height
}
func getStringHeight(mytext: String, fontSize: CGFloat, width: CGFloat) -> CGFloat
{
let font = UIFont(name: "Apple SD Gothic Neo", size: fontSize)
let size = CGSizeMake(width,CGFloat.max)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .ByWordWrapping;
let attributes = [NSFontAttributeName:font! as UIFont,
NSParagraphStyleAttributeName:paragraphStyle.copy()]
let text = mytext as NSString
let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil)
return rect.size.height
}
答案 0 :(得分:0)
我可能会建议您使用:
var elem = document.querySelector('.js-switch');
var init = new Switchery(elem);
init.disable();
init.enable();
这将自动调整单元格的高度,而不查找文本的高度。 您可以将这两行放在viewDidLoad上,与估计的行高相同,它可以帮助您进行渲染。
答案 1 :(得分:0)
试用此代码:
注意:两种方法都应该有效。测试Swift 3。
方法1:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
tableView.estimatedRowHeight = 44.0 // standard tableViewCell height
tableView.rowHeight = UITableViewAutomaticDimension
return yourArrayName.count
}
方法2:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
注意:您可能需要将此代码放入 cellForRowAt
中 yourCellName.sizeToFit()