본문 바로가기
개발노트/iOS

[iOS] UILabel에 padding 주기

by 전지적진영시점 2023. 2. 22.
반응형

개발 환경

---------------------------------

OS : Mac

개발 툴 : xcode

개발 언어 : Swift

xcode version : 14.2

min iOS version : 13.0 

---------------------------------

 

안녕하세요 이번 포스팅에서는 UILabel에 padding을 줘볼건데요

android 개발을 하다보면 xml 파일에서 padding이나 margin을 주는게 너무나 너무나 ~ 간편하게 되어있는데

iOS 1년차 개발자의 눈으로는 xcode에서 margin이나 padding 주기가 좀 까다로운것 같아요

 

좀 많이? ㅠ 까다로운 것 같습니다.

 

다시 본론으로 돌아와서 UILabel에 Padding을 줘볼건데요 

먼저 @IBDesignable annotation이 붙은 클래스를 하나 만들어줍니다.

 

아래 소스를 그대로 넣어줍니다.

@IBDesignable class PaddingLabel: UILabel {

    @IBInspectable var topInset: CGFloat = 5.0
    @IBInspectable var bottomInset: CGFloat = 5.0
    @IBInspectable var leftInset: CGFloat = 8.0
    @IBInspectable var rightInset: CGFloat = 8.0
    
    override func drawText(in rect: CGRect) {
        let insets = UIEdgeInsets.init(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
        super.drawText(in: rect.inset(by: insets))
    }

    override var intrinsicContentSize: CGSize {
        let size = super.intrinsicContentSize
    
        return CGSize(width: size.width + leftInset + rightInset, height: size.height + topInset + bottomInset)
    }
}

 

 

 

@IBDesignable  어노테이션을 사용했기 때문에 storyBoard 인스펙터에서 사용하고 실시간 렌더링을 할 수 있습니다.

 

위 이미지와 같이 인스펙터에서 UILabel을 하나 생성하고

class를 PaddingLabel로 설정해주면 UILabel에 padding을 줄 수 있습니다.!

 

더 좋은 방법이 있다면 공유 부탁드립니다,,!

반응형

댓글