UIKit
코드베이스로 UITextView 구현하기
by 리버🐦🔥
2023. 10. 7.
|
<UITextView>
- 다중 행의 텍스트 입력을 허용하는 뷰
- 긴 텍스트 블록을 입력하고 편집하는 데 사용
- UITextField와는 다르게 너비와 높이 제약 조건을 설정해야 한다.
[Method & Property]
- text: UITextView에 초기 텍스트를 지정한다.
- font: 텍스트의 폰트를 지정한다.
- layer: UITextView의 뷰 레이어를 지정한다. (border 등을 지정할 수 있다.
- isEditable: UITextView 안의 텍스트의 변경 허용 여부를 결정한다.
- delegate: 사용자와 상호 작용하고 입력 이벤트를 처리하기 위해 딜리게이트를 지정한다. 이 때, UITextView가 속한 Controller에 “UITextViewDelegate” 프로토콜을 추가해야 한다.
등… 프로퍼티 및 메서드 추가로 공부해보기! |
//
// UITextViewTest.swift
// UIKit-Study
//
// Created by Kyungsoo Lee on 2023/09/30.
//
import UIKit
class UITextViewTest: UIViewController, UITextViewDelegate {
//MARK: - UITextView
private lazy var uiTextView: UITextView = {
let textView = UITextView()
textView.text = "UITextView"
textView.textAlignment = .center
textView.backgroundColor = .black
textView.textColor = .white
textView.font = .systemFont(ofSize: 24, weight: .medium)
textView.layer.borderWidth = 5
textView.layer.borderColor = UIColor.gray.cgColor
textView.isEditable = true
textView.delegate = self
textView.translatesAutoresizingMaskIntoConstraints = false
return textView
}()
// MARK: - viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.view.backgroundColor = .systemGray
// 뷰 추가(아직 layout 설정 안된 상태)
self.view.addSubview(uiTextView)
setLayout()
}
// MARK: - UITextView 제약 조건
private func setUITextViewLayout() {
let uiTextViewConstraint = [
// 다른 컴포넌트의 상대적인 위치로 제약조건을 설정할 수도 있다.
uiTextView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
uiTextView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
uiTextView.widthAnchor.constraint(equalToConstant: 200), // 너비 제약 조건 추가
uiTextView.heightAnchor.constraint(equalToConstant: 200) // 높이 제약 조건 추가
]
NSLayoutConstraint.activate(uiTextViewConstraint)
}
// MARK: - 전체 제약조건 설정
// 컴포넌트들의 레이아웃을 설정한다
private func setLayout() {
// 프레임 기반의 레이아웃을 비활성화 하여 오토 레이아웃을 기반으로 설정할 수 있도록 한다.
// UITextView 제약조건 설정
setUITextViewLayout()
}
}
import SwiftUI
@available(iOS 13.0.0, *)
struct UITextViewTestPreview: PreviewProvider {
static var previews: some View {
UITextViewTest().toPreview()
}
}