안녕하세요. 모리스입니다.😀
이번 노트에서는 iOS 앱을 개발하다 보면 텍스트 중간에 이미지를 삽입해야 하는 상황이 종종 있습니다.
예를 들어, "좋아요 👍"처럼 글자 옆에 아이콘을 붙이고 싶을 때가 있죠.
이걸 단순히 UILabel 옆에 UIImageView를 두고 AutoLayout 방식으로도 구현할 수 있지만, 코드의 양이 길어지고 저는 관리하기가 좀 번거롭더라구요..ㅎ
그래 이번 노트에서는 NSAttributedString과 NSTextAttachment를 활용해 UILabel 내부 텍스트에 이미지를 삽입하는 방법을 정리해보려고 합니다.
핵심은 NSMutableAttributedString에 이미지 첨부용 객체(NSTextAttachment) 를 추가하는 것입니다.
예제 코드
let label: UILabel = UILabel()
let mutableAttributedString = NSMutableAttributedString(string: "테스트") // 1. 이미지 첨부 객체 생성
let attachment = NSTextAttachment()
attachment.image = UIImage(named: "testImage") // 2. 이미지 크기 지정
attachment.bounds = CGRect(x: 0, y: 0, width: 18, height: 18) // 3. NSAttributedString으로 변환 후 append let attachmentString = NSAttributedString(attachment: attachment) mutableAttributedString.append(attachmentString) //
4. UILabel에 적용 label.attributedText = mutableAttributedString
위 코드를 실행하면 UILabel의 "테스트" 텍스트 뒤에 18x18 크기의 이미지가 붙게 됩니다.
즉, "테스트 [이미지]" 형태로 자연스럽게 표현할 수 있죠.
NSTextAttachment를 사용하면 UILabel 내부에 쉽게 이미지를 삽입할 수 있습니다.
별도의 UIImageView를 두고 AutoLayout으로 정렬하는 방식보다 훨씬 간단하면서도 깔끔하다는 장점이 있습니다.
👉 커스텀 폰트 크기나 줄 간격에 따라 이미지의 위치가 어색해질 수 있으니, bounds의 y 값을 조정해 정렬을 맞추면 더 자연스러운 결과를 얻을 수 있습니다.
'iOS' 카테고리의 다른 글
| [iOS] UITextField 글자 수 제한하기 (0) | 2025.08.26 |
|---|---|
| [iOS] UITableView 특정한 위치로 스크롤 이동 (0) | 2025.08.25 |
| [iOS] Navigation Bar Button Items 간격 조정 (1) | 2025.08.25 |
| [iOS] TableView reloadSections (0) | 2025.04.13 |
| [iOS] UIImage 초기화 named와 resource (0) | 2025.04.11 |