当字符串为空时更改变量 / int



我正在尝试计算标签的高度,以便我可以动态设置其单元格的高度。这工作正常,如下所示:

let commentText = itemsFeed[indexPath.item].comment
let commentRect = NSString(string: commentText!).boundingRect(with:CGSize(width: rectWidth, height: 1000), options: NSStringDrawingOptions.usesFontLeading.union(NSStringDrawingOptions.usesLineFragmentOrigin), attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 16)], context: nil)
let commentHeight = ceil(commentRect.height)

这将返回所有正确的值,我可以根据 commentHeight 动态设置高度。

但是,当我不添加注释时,我想为 commentHeight 返回 0,而是 Swift 返回 20(单行标签的默认高度(。如何覆盖它?

我试图添加这样的 if 语句:

if(commentText?.isEmpty)! {
let commentHeight = 0
} else {
let commentText = itemsFeed[indexPath.item].comment
let commentRect = NSString(string: commentText!).boundingRect(with:CGSize(width: rectWidth, height: 1000), options: NSStringDrawingOptions.usesFontLeading.union(NSStringDrawingOptions.usesLineFragmentOrigin), attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 16)], context: nil)
let commentHeight = ceil(commentRect.height)
}

但这在我的CGSize的返回中返回使用未解析的标识符"commentHeight">(其中需要commentHeight(。

关于如何实现这一点的任何提示或技巧,以便在没有文本的情况下 commentHeight 为 0?

(提供的所有代码都在 sizeForItemAt 方法内(

变量存在于大括号内,仅声明它。试试这个:

let commentHeight: CGFloat
if(commentText?.isEmpty)! {
commentHeight = 0
} else {
let commentText = itemsFeed[indexPath.item].comment
let commentRect = NSString(string: commentText!).boundingRect(with:CGSize(width: rectWidth, height: 1000), options: NSStringDrawingOptions.usesFontLeading.union(NSStringDrawingOptions.usesLineFragmentOrigin), attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 16)], context: nil)
commentHeight = ceil(commentRect.height)
}

最简单的方法是:

let commentHeight: CGFloat = commentText?.isEmpty == true ? 0 : ceil(NSString(string: itemsFeed[indexPath.item].comment!).boundingRect(with:CGSize(width: rectWidth, height: 1000), options: NSStringDrawingOptions.usesFontLeading.union(NSStringDrawingOptions.usesLineFragmentOrigin), attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 16)], context: nil).height)

(如果避免强制展开,并在处理选项时使用if-letguard??,我更喜欢它(

如果您需要根据标签的内容调整标签的大小,您可以使用界面生成器在行数中设置 0。然后标签将自动为您调整大小。

相关内容

  • 没有找到相关文章

最新更新