반응형
Label에 padding 주기
라벨에 패딩을 쉽게 주는 방법을 알아보겠습니다. 사실 저장해두고 써먹으려는...
(근데 왜 CSS 처럼 padding이나 margin이 없을까...?)
암튼 View 안에 label을 넣어 padding을 주는 방법도 있다고 하는데 여기서는 @IBDesignable을 이용하도록 하겠습니다.
@IBDesignable을 설정해주면 스토리보드에서 클릭으로 설정이 가능한 창이 생성됩니다.
사용 방법은 간단합니다.
1. Swift 파일을 만든다.
2. Label의 class에 만든 Swift의 class를 할당해준다.
3. 속성 인스펙터에 새로운 창이 생겼으니 padding을 조절하면 된다!
import Foundation
import UIKit
@IBDesignable class PaddingLabel: UILabel {
@IBInspectable var topPadding: CGFloat = 0.0
@IBInspectable var leftPadding: CGFloat = 0.0
@IBInspectable var bottomPadding: CGFloat = 0.0
@IBInspectable var rightPadding: CGFloat = 0.0
convenience init(padding: UIEdgeInsets) {
self.init()
self.topPadding = padding.top
self.leftPadding = padding.left
self.bottomPadding = padding.bottom
self.rightPadding = padding.right
}
override func drawText(in rect: CGRect) {
let padding = UIEdgeInsets.init(top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding)
super.drawText(in: rect.inset(by: padding))
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.width += self.leftPadding + self.rightPadding
contentSize.height += self.topPadding + self.bottomPadding
return contentSize
}
}
Label에 cornerRadius 주기
button 처럼 label을 둥글게 만드려 했지만 잘 되지 않았습니다.
찾아본 결과 clipsToBound를 true로 해주고 radius를 설정해 주면 잘 되었습니다!
(참고로 clipsToBound는 요소가 삐져나가지 않도록 하는 속성이라고 합니다.)
예제 코드
self.someLabel.clipsToBounds = true
self.someLabel.layer.cornerRadius = 15
반응형
'iOS > UIKit' 카테고리의 다른 글
[iOS] 앱 실행시 조건에 따라 다른 viewController로 (0) | 2022.03.02 |
---|---|
[iOS] TableView 스크롤위치 변경(하단으로 스크롤) (0) | 2022.03.02 |
[iOS] Transform을 이용해 KeyBoard 이벤트 처리 (0) | 2022.03.02 |
[iOS] collectionView 헤더(Header) 커스텀 및 사용 (0) | 2022.02.22 |
[iOS] collectionView 메서드, 프로퍼티 일부 정리 (0) | 2022.02.22 |