여기에 텍스트 주위에 패딩 (왼쪽, 오른쪽, 위쪽 및 아래쪽)이있는 레이블이 표시됩니다. (UILabel의 텍스트 패딩
import UIKit
class LuxLabel: UILabel {
//let padding: UIEdgeInsets
var padding: UIEdgeInsets = UIEdgeInsets.zero {
didSet {
self.invalidateIntrinsicContentSize()
}
}
// Create a new PaddingLabel instance programamtically with the desired insets
required init(padding: UIEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)) {
self.padding = padding
super.init(frame: CGRect.zero)
}
// Create a new PaddingLabel instance programamtically with default insets
override init(frame: CGRect) {
padding = UIEdgeInsets.zero // set desired insets value according to your needs
super.init(frame: frame)
}
// Create a new PaddingLabel instance from Storyboard with default insets
required init?(coder aDecoder: NSCoder) {
padding = UIEdgeInsets.zero // set desired insets value according to your needs
super.init(coder: aDecoder)
}
override func drawText(in rect: CGRect) {
super.drawText(in: UIEdgeInsetsInsetRect(rect, padding))
}
// Override `intrinsicContentSize` property for Auto layout code
override var intrinsicContentSize: CGSize {
let superContentSize = super.intrinsicContentSize
let width = superContentSize.width + padding.left + padding.right
let heigth = superContentSize.height + padding.top + padding.bottom
return CGSize(width: width, height: heigth)
}
}
그것은 PaddingLabel을 기반으로합니다 : 이것은 내 하위 클래스 UILabel의에 대한 코드가
입니다 : 이 문제는 SOF에 그들 중 몇 가지를 읽은 후 게시물을 관련있다, 나는 해결책이 here을 제안하여 시도 위의 링크 참조).
대부분 잘 작동하지만 이해할 수없는 몇 가지 이유 때문에 일이 잘못되어 디스플레이가 잘리는 경우가 있습니다. 라벨에 넣어
문자열은 다음과 같습니다 :
이
은 예입니다. "그것은 사각형 모양과 파란색 색상을하고있다"가
let label = LuxLabel(padding: UIEdgeInsets(top: 5, left: 10, bottom: 5, right: 10)) label.numberOfLines = 0
이것은 결과 :
레이블을 작성하는 코드는
나는 위의 두이 줄을 추가하는 경우 :
label.lineBreakMode = .byWordWrapping
결과는 다음과 같습니다
또한 몇 가지 제약 조건을 설정했습니다. 이 모든 것은 95 %의 시간 동안 작동합니다. 누구든지 문제가 무엇인지 볼 수 있습니까? invalidateIntrinsicContentSize를 호출
당신이 '설정이있으세요이 numberOfLines = 0'과'lineBreakMode = .byWordWrapping '? – Priya
numberOfLines = 0을 설정했지만 lineBreakMode = .byWordWrapping을 설정하지 않았습니다. 사실 멀티플 라인이 완벽하게 작동하는 경우가 많습니다. lineBreakMode = .byWordWrapping을 설정하면 문제가 해결되지 않고 내 게시물을 편집하여 이에 대한 세부 정보를 추가하십시오. – Michel
레이블에 대해 정적 높이 제한을 설정 했습니까? – Priya