[Swift]UILabel의 원하는 위치에 이미지를 추가하고 행 사이를 설정할 수 있는 확장 메서드
6446 단어 Swift
하고 싶은 일
UILabel의 선두에 화상을 추가해, Label가 복수행이 되었을 때의 행간을 추가할 수 있는 메소드를 만든다.
(Label의 말미에 이미지를 추가한다면, 비교적 간단하지만… 말미 이외이라면 조금 까다롭다 )
↓ 이미지는 이런 느낌입니다. . . (※아래와 같은 코드를 실행해도 이 이미지처럼 보이지 않습니다)
고양이 씨 귀여운
"귀여운 고양이"
코드
.swift
extension UILabel {
func setupSpacingAndImage(
_ text: String, spacingHeight: Float, image: UIImage, at index: Int, size: CGSize? = nil
) {
let attributedString = NSMutableAttributedString()
let attachment = NSTextAttachment(image: image, font: font, size: size ?? image.size, alignment: .center)
attributedString.append(NSAttributedString(attachment: attachment))
attributedString.append(NSAttributedString(string: text))
let style = NSMutableParagraphStyle()
style.lineSpacing = CGFloat(spacingHeight)
let attributes: [NSAttributedString.Key: Any] = [
.paragraphStyle: style
]
attributedString.addAttributes(attributes, range: NSRange(location: index, length: attributedString.length))
self.attributedText = attributedString
}
}
사용법
.swift
// 引数imageは非Optionalなので、オプショナルバインディング
guard let image = UIImage(named: "imageName")
label.setupSpacingAndImage("Labelに表示したい複数行のテキスト", spacingHeight: 6, image: image, at: 0, size: CGSize(width: 16, height: 16))
인수의 간략한 설명
"Label에 표시하려는 여러 줄 텍스트"
-> Label의 text로서 설정하고 싶은 문자. 인수 이름은 생략되었습니다.
spacingHeight: 6
-> 행 사이의 높이를 설정합니다.
image: image
-> 삽입하려는 이미지
at: 0
-> 얼마나 많은 문자 눈에 그림을 삽입하는가? 메소드내에서는,
at index: Int
에 의해 at로 설정한 값을 index로서 사용하고 있습니다.size: CGSize(width: 16, height: 16))
-> 이미지의 크기입니다. 여기를 설정하지 않으면 이미지 본래의 크기를 설정합니다.
Reference
이 문제에 관하여([Swift]UILabel의 원하는 위치에 이미지를 추가하고 행 사이를 설정할 수 있는 확장 메서드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/haru16-no14/items/3f15fbe79b2bfb751347텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)