美文网首页
修正 iOS 10 下 tableViewCell 多行导致的文

修正 iOS 10 下 tableViewCell 多行导致的文

作者: 冰霜海胆 | 来源:发表于2018-03-19 16:10 被阅读22次

    iOS 11 已经修复了这个问题,此问题仅针对 iOS 10 及其低于 iOS 10 的版本!
    iOS 10 中,当设置 tableViewCell 的样式为 .subtitle 时,即使设置 detailTextLabel?.numberOfLines = 0,也会出现多行文字溢出的问题,如图:


    解决方法:
    tableViewCell 中重写
    systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority)
    来修复此问题:

    
        override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
            
            if #available(iOS 11, *) {
                return super.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: horizontalFittingPriority, verticalFittingPriority: verticalFittingPriority)
            }
            else {
                layoutIfNeeded()
                
                var size = super.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: horizontalFittingPriority, verticalFittingPriority: verticalFittingPriority)
                
                guard let textLabel = textLabel,
                      let detailTextLabel = detailTextLabel
                else { return size }
                
                let detailHeight = detailTextLabel.frame.height
                if detailTextLabel.frame.minX > textLabel.frame.minX {
                    let textHeight = textLabel.frame.height
                    
                    if detailHeight > textHeight {
                        size.height += detailHeight - textHeight
                    }
                }
                else {
                    size.height += detailHeight
                }
                
                return size
            }
        }
    

    相关文章

      网友评论

          本文标题:修正 iOS 10 下 tableViewCell 多行导致的文

          本文链接:https://www.haomeiwen.com/subject/bjspqftx.html