텍스트 속성 문자열 지우기

8841 단어 iOS
속성 문자열은 문자에 배경색을 추가하는 데 사용됩니다.
추가 문자열은 label에만 추가됩니다.
TextView 및 TextField 등을 입력하는 데도 사용할 수 있습니다.

속성 문자열을 지우려는 경우
예를 들어, TextViewEdit에서 배경색을 투명하게 복원하려는 경우
처리가 좀 힘들어서 메모로 적었습니다.

텍스트 보기의 텍스트 배경색이 노란색으로 바뀝니다.


먼저 TextView의 텍스트 배경색을 노란색 코드로 설정합니다.
@IBOutlet weak var textView: TextView!

func fillIn(value: String) {
    let attributes: [NSAttributedString.Key: Any] = [
        .backgroundColor: UIColor.yellow,
        .font: UIFont.systemFont(ofSize: 20.0)
    ]
    textView.attributedText = NSAttributedString(string: value,
                                                 attributes: attributes)
}
텍스트 뷰에 값을 채우면 텍스트 배경색이 노란색으로 바뀝니다.

텍스트 보기의 텍스트 배경색을 투명하게 복원하기


속성 문자열을 지울 방법을 찾을 수 없습니다.
이에 따라 .backgroundColor: UIColor.clear 에 대한 또 다른 AttributedString 설정
에 설명된 해당 매개변수의 값입니다.
[textView 편집 언제 시작]에서 지웁니다.
자세한 내용을 확인한 후
textView.delegate = self
텍스트 입력을 시작할 때 textViewDidBeginEditing 쓰기 처리.
extension ViewController: UITextViewDelegate {
    func textViewDidBeginEditing(_ textView: UITextView) {
        let attributes: [NSAttributedString.Key: Any] = [
            .foregroundColor: UIColor.black,
            .backgroundColor: UIColor.clear,
            .font : UIFont.systemFont(ofSize: 20.0)
        ]
        textView.attributedText = NSAttributedString(string: textView.text ?? "",
                                                     attributes: attributes)
    }
}
배경색을 투명 AttributedString으로 설정하여
텍스트 배경색을 투명하게 복원합니다.

이렇게 하면 목적을 달성할 수 있다!!

생각지도 못했어!문자를 추가해보면...



...목적 미달
추가 설정이 필요합니다.typingattributes.
https://developer.apple.com/documentation/uikit/uitextview/1618629-typingattributes
리본에서 를 클릭합니다.
다음에 입력할 텍스트에 설정을 추가해야 합니다.
extension ViewController: UITextViewDelegate {
    func textViewDidBeginEditing(_ textView: UITextView) {
        let attributes: [NSAttributedString.Key: Any] = [
            .foregroundColor: UIColor.black,
            .backgroundColor: UIColor.clear,
            .font : UIFont.systemFont(ofSize: 20.0)
        ]
        textView.attributedText = NSAttributedString(string: textView.text ?? "",
                                                     attributes: attributes)
        textView.typingAttributes = attributes // New!!
    }
}
이렇게 하면 순조롭게 목적을 달성할 수 있다.

총결산


다른 방법을 아시는 분들이 알려주셨으면 좋겠어요. m(__)m

참고 자료

  • https://qiita.com/KikurageChan/items/bab37e1fb19002256119
  • https://qiita.com/touyu/items/2e08bea72cba85107616
  • 좋은 웹페이지 즐겨찾기