UILabel은 기본적으로 내부 텍스트에 패딩을 줄 수 있는 기능이 없습니다. 하지만 패딩을 넣고 싶은 경우 다음과 같은 두 가지 방법으로 구현할 수 있습니다:
1. UILabel을 서브클래싱하여 패딩 추가하기
UILabel의 서브클래스를 생성하여 textInsets를 설정하면 패딩을 직접 추가할 수 있습니다.
class PaddedLabel: UILabel {
var textInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8) // 원하는 패딩
override func drawText(in rect: CGRect) {
super.drawText(in: rect.inset(by: textInsets))
}
override var intrinsicContentSize: CGSize {
let originalSize = super.intrinsicContentSize
let width = originalSize.width + textInsets.left + textInsets.right
let height = originalSize.height + textInsets.top + textInsets.bottom
return CGSize(width: width, height: height)
}
}
이렇게 PaddedLabel을 사용하면 기본 UILabel과 비슷하게 패딩을 적용할 수 있습니다.
2. UILabel을 감싸는 UIView 사용하기
패딩을 위한 UIView를 만들어 그 안에 UILabel을 추가하는 방법입니다. UIView는 패딩을 쉽게 조절할 수 있어 UILabel을 직접 서브클래싱하지 않고도 구현이 가능합니다.
let paddedView = UIView()
paddedView.backgroundColor = .systemGray // 배경색 지정
paddedView.layer.cornerRadius = 4 // 둥근 모서리 설정
paddedView.translatesAutoresizingMaskIntoConstraints = false
let categoryLabel: UILabel = {
let label = UILabel()
label.text = "문화시설"
label.font = .systemFont(ofSize: 12, weight: .regular)
label.textColor = .white
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
paddedView.addSubview(categoryLabel)
// 패딩을 위한 제약 추가
NSLayoutConstraint.activate([
categoryLabel.topAnchor.constraint(equalTo: paddedView.topAnchor, constant: 4),
categoryLabel.leadingAnchor.constraint(equalTo: paddedView.leadingAnchor, constant: 8),
categoryLabel.bottomAnchor.constraint(equalTo: paddedView.bottomAnchor, constant: -4),
categoryLabel.trailingAnchor.constraint(equalTo: paddedView.trailingAnchor, constant: -8)
])
이 구조는 paddedView 안에서 UILabel의 위치를 지정하여 원하는 패딩을 적용할 수 있도록 합니다. 이 paddedView를 다른 뷰에 추가하면 UILabel의 패딩을 간단하게 적용할 수 있습니다.
'iOS > UIKIT' 카테고리의 다른 글
날짜 선택하기 (0) | 2024.11.06 |
---|---|
검색한 결과에서 중복된 데이터 통합하기 (1) | 2024.10.30 |
카테고리별 검색 결과를 5개 보여주는 방법 (0) | 2024.10.29 |
검색결과를 카테고리별로 구분하기 (5) | 2024.10.28 |
서치바로 데이터 검색하기 (0) | 2024.10.28 |