Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Observable
- 리팩토링
- ribs
- Human interface guide
- collectionview
- ios
- UITextView
- uitableview
- uiscrollview
- 애니메이션
- RxCocoa
- UICollectionView
- 리펙토링
- clean architecture
- tableView
- SWIFT
- Clean Code
- swift documentation
- 스위프트
- MVVM
- 클린 코드
- Xcode
- map
- HIG
- Protocol
- combine
- Refactoring
- 리펙터링
- rxswift
- swiftUI
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] NSTextAttachment 개념 (문자열에 이미지 넣는 방법) 본문
문자열에 이미지 넣는 방법
- NSTextAttachment 사용
- NSAttributedString에 attachment를 가지고 초기화할 수 있는데, 이 때 attachemnt에 이미지를 넣어서 이 것을 사용하면 텍스트에 붙이기가 가능
- 1. NSTextAttachment에 image, 크기를 입력
- 2. NSAttributedString에 위 attachment를 가지고 초기화
- 3. 위 NSAttributedString을 또 다른 문자열로 구성된 NSAttributedString에 append하면 합치기
직접 구현해보기
- 1. NSTextAttachment에 image, 크기를 입력
- height를 50으로할때 이 비율을 기준으로 width도 정해지게끔 처리
let imageAttachment = NSTextAttachment()
imageAttachment.image = UIImage(named: "sample")
let imageAspectRatio = imageAttachment.image!.size.width / imageAttachment.image!.size.height
let imageHeight = 50.0
let imageWidth = imageHeight * imageAspectRatio
imageAttachment.bounds = CGRect(x: 0, y: -5, width: imageWidth, height: imageHeight)
- 2. NSAttributedString에 위 attachment를 가지고 초기화
let imageString = NSAttributedString(attachment: imageAttachment)
- 3. 위 NSAttributedString을 또 다른 문자열로 구성된 NSAttributedString에 append하면 합치기
let attributedString = NSMutableAttributedString(string: "이미지 붙이기 예제 ")
attributedString.append(imageString)
attributedString.append(NSAttributedString(string: "입니다."))
label.attributedText = attributedString
완성)
* 전체 코드
import UIKit
class ViewController: UIViewController {
private let label = {
let l = UILabel()
l.textColor = .black
l.font = .systemFont(ofSize: 24)
l.translatesAutoresizingMaskIntoConstraints = false
return l
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(label)
NSLayoutConstraint.activate([
label.centerYAnchor.constraint(equalTo: view.centerYAnchor),
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])
let imageAttachment = NSTextAttachment()
imageAttachment.image = UIImage(named: "sample")
let imageAspectRatio = imageAttachment.image!.size.width / imageAttachment.image!.size.height
let imageHeight = 50.0
let imageWidth = imageHeight * imageAspectRatio
imageAttachment.bounds = CGRect(x: 0, y: -5, width: imageWidth, height: imageHeight)
let imageString = NSAttributedString(attachment: imageAttachment)
let attributedString = NSMutableAttributedString(string: "이미지 붙이기 예제 ")
attributedString.append(imageString)
attributedString.append(NSAttributedString(string: "입니다."))
label.attributedText = attributedString
}
}
* 참고
- https://developer.apple.com/documentation/uikit/nstextattachment
'iOS 응용 (swift)' 카테고리의 다른 글
Comments