Tong's Blog

[Swift] UITextView 에 hyperlink 색상 적용하기 (1) 본문

iOS/Swift

[Swift] UITextView 에 hyperlink 색상 적용하기 (1)

통스 2024. 3. 27. 23:35
반응형

안녕하세요.

오늘은 UITextView 를 사용할때 링크를 탐지하고 링크를 클릭할수 있도록 하려고 합니다.

 

우선 UITextView 를 그려보겠습니다.

import UIKit

class ViewController: UIViewController {

    let textView: UITextView = {
        let textView = UITextView()
        textView.text =
"""
안녕하세요.
https://naver.com
안녕히계세요.
"""
        textView.textColor = .black
        textView.font = .systemFont(ofSize: 30)
        textView.translatesAutoresizingMaskIntoConstraints = false
        return textView
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        view.addSubview(textView)

        NSLayoutConstraint.activate([
            textView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            textView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
            textView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
            textView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
        ])
    }


}

결과값 - 링크가 활성화도 되지 않고 클릭도 되지 않는다

 

일반적인 링크를 활성화를 하려면 두줄의 코드만 추가하면 됩니다.

    let textView: UITextView = {
        let textView = UITextView()
        textView.text =
"""
안녕하세요.
https://naver.com
안녕히계세요.
"""
        textView.textColor = .black
        textView.font = .systemFont(ofSize: 30)
        textView.translatesAutoresizingMaskIntoConstraints = false

        // 링크 탐지 및 클릭 추가
        textView.dataDetectorTypes = .link
        textView.isEditable = false

        return textView
    }()

 

결과값 - 링크 색상이 변경되고 링크 클릭도 가능하다.

 

여기서 링크 색상을 변경하려면 TextView 의 tintColor 를 변경해주면 됩니다.

    let textView: UITextView = {
        let textView = UITextView()
        textView.text =
"""
안녕하세요.
https://naver.com
안녕히계세요.
"""
        textView.textColor = .black
        textView.font = .systemFont(ofSize: 30)
        textView.translatesAutoresizingMaskIntoConstraints = false

        // 링크 탐지 및 클릭 추가
        textView.dataDetectorTypes = .link
        textView.isEditable = false

        // 링크 색상 변경
        textView.tintColor = .red

        return textView
    }()

결과값 - 링크 컬러가 tintColor 인 red 로 바뀌었다

반응형
Comments