UILabel Inset
UILabel의 text와 근간이 되는 label의 고유 view가 가지는 것 사이에 여유공간을 주기 위한 코드
InsetLabel
/// UILabel의 text와 컨테이너 사이의 inset값을 설정할 수 있는 커스텀 라벨
final class InsetLabel: UILabel {
/// text와 UILabel 사이의 inset값을 설정
var edgeInsets: UIEdgeInsets = .init(top: 2.0, left: 8.0, bottom: 2.0, right: 8.0)
override func drawText(in rect: CGRect) {
super.drawText(in: rect.inset(by: edgeInsets))
}
override var intrinsicContentSize: CGSize {
let size = super.intrinsicContentSize
return CGSize(width: size.width + edgeInsets.left + edgeInsets.right,
height: size.height + edgeInsets.top + edgeInsets.bottom)
}
override var bounds: CGRect {
didSet {
preferredMaxLayoutWidth = bounds.width - (edgeInsets.left + edgeInsets.right)
}
}
}
Usage)
private lazy var customLabel: InsetLabel = {
$0.font = UIFont.systemFont(ofSize: 11, weight: .regular)
$0.textColor = UIColor.blue
$0.edgeInsets = .init(top: 5, left: 10, bottom: 5, right: 10)
$0.cornerRadius = 6
$0.backgroundColor = UIColor.blue.withAlphaComponent(0.4)
return $0
}(InsetLabel())
iOS12부터 개발을 하다보니 UIKit을 주로 사용했었는데,
최근에는 SwiftUI를 더 많이 사용하다보니 UILabel 사이에 공간을 어떻게 주는지 오랜만에 찾아봤어서 감회가 새로웠다.
언젠가는 UIKit을 아예 모르는 분들이 더욱 많아지지 않을까란 생각이 든다.
'apple > Docs, iOS, Swift' 카테고리의 다른 글
[iOS] CoreData 정리 이론 (1/2) (0) | 2023.12.10 |
---|---|
[Swift] plain ol' data(POD) (0) | 2023.08.08 |
[WWDC23] Meet MapKit for SwiftUI (0) | 2023.06.18 |
[XCode 15.0 beta] Preview Macro Bug (0) | 2023.06.08 |
[Swift] 커링(Currying) (1) | 2023.02.28 |