적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

[Swift] bullet string 적용하기

hongssup_ 2023. 12. 26. 12:42
반응형

Bullet String 적용하기

점 넣고 들여쓰기 해주는 방법 ! 

 

1. NSAttributedString 에 extension으로 원하는 값들을 설정해준다.

extension NSAttributedString {
    static func makeBulletList(
        strings: [String],
        color: UIColor = MacaColors.gray500,
        font: UIFont = Fonts.AppleRegular.of(size: 14),
        indentation: CGFloat = 15,
        lineSpacing: CGFloat = 4,
        paragraphSpacing: CGFloat = 2
    ) -> NSAttributedString {
    
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.defaultTabInterval = indentation
        paragraphStyle.tabStops = [NSTextTab(textAlignment: .left, location: indentation)]
        paragraphStyle.lineSpacing = lineSpacing
        paragraphStyle.paragraphSpacing = paragraphSpacing
        paragraphStyle.headIndent = indentation
        
        let bulletList = NSMutableAttributedString()
        
        for string in strings {
            let attributedString = NSMutableAttributedString(string: string)
            
            attributedString.addAttributes(
                [.paragraphStyle: paragraphStyle, .font: font, .foregroundColor: color],
                range: NSMakeRange(0, attributedString.length)
            )
            
            bulletList.append(attributedString)
        }
        
        return bulletList
    }
}

 

2. String 배열로 텍스트 설정

let writeStory: [String] = [
    "\u{2022} 여기에 내용을 입력해주세요.\n",
    "\u{2022} 전문답변을 받고 싶다면 고민을 자세히 적어주세요.\n",
    "\u{2022} 해시태그를 넣으면 글을 더 쉽게 찾을 수 있어요.\n",
    "\u{2022} 닉네임 비공개, 전문답변 받지 않기 등은 [설정] 톱니바퀴 아이콘을 눌러 선택할 수 있어요."
]

 

3. UILabel 에 적용

myLabel.attributedText = .makeBulletList(strings: writeStory)

 

이렇게 해주면 다음과 같이 bullet string 이 적용된 텍스트를 간단하게 만들어줄 수 있따 😊

 


참고 : https://stackoverflow.com/questions/5533851/format-uilabel-with-bullet-points

 

728x90
반응형