일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWIFT
- UIResponder
- 독후감
- mvvm
- SWIFTUI
- 독서후기
- @available
- 부트캠프
- delegation
- human interface guidelines
- Mock
- Navigation
- 스타트업주니어로살아남기
- View Life Cycle
- 스위프트
- Info.plist
- NotificationCenter
- Structures and Classes
- xcode
- roundingMode
- IOS
- Codegen
- Modality
- 야곰아카데미
- 책후기
- Failed to register bundle identifier
- contentInset
- viewcontroller
- NumberFormatter
- 아이폰
- Today
- Total
호댕의 iOS 개발
[iOS] TextField의 테두리에 색깔 넣기(조건이 안 맞는 경우만!) 본문
TextField는 기본적으로 만들게 되면 테두리가 존재한다.
이런 식으로 말이다.
(참고로 상품 설명의 경우 TextView를 통해 구현했다)
하지만 만약 해당 텍스트 필드에 작성한 내용이 특정 조건을 충족하지 못할 경우 빨간 선으로 테두리를 그리고 싶으면 어떻게 해야할까?
코드는 아주 간단하지만 헤멨던 것이 있어 작성해본다.
일단 코드 먼저 살펴보면 다음과 같다.
textField.layer.borderColor = UIColor.systemRed.cgColor
textField.layer.cornerRadius = 5
textField.layer.borderWidth = 0.5
코드는 아주 간단하다.
하지만 여기서 textField.layer.borderWidth = 0.5 이 코드가 없다면?
당연히 테두리는 이미 있으니 색만 정해주면 되겠지 생각했지만 그렇지 않았다.
layer에서 테두리를 줄 경우 기존의 테두리를 수정하는 것이 아닌 새로운 테두리를 그리는 것이 된다.
따라서 아무리 색깔을 줘도 새로 만든 테두리의 두께가 0이기 때문에 테두리는 생성되지 않는다!!!
textField에는 borderStyle은 존재하지만 borderColor는 존재하지 않는다. 즉, 테두리를 직접 생성을 해줘야 하기 때문에 위 코드가 다 필요하게 된다.
그렇다면 borderStyle에는 뭐가 있을까?
이는 스토리보드의 attribute Inspector에서도 찾을 수 있다.
왼쪽부터 다음과 같다.
- none: 테두리가 아예 표시가 안됨
- line: 화면에 얇은 직사각형이 텍스트 필드를 둘러쌈
- bezel: 위에 약간 베젤이 생기는 테두리로 생성됨. 주로 데이터를 받는 곳에 사용함
- roundedRect: 모서리가 둥근 테두리로 생성됨
그렇다면 TextField가 수정될 때마다 조건을 충족하는지 확인하고 싶다면 어떻게 해야 할까?
이땐 textField에 addTarget을 해주면 된다.
.addTarget(self, action: #selector(textInputDidChange(_:)), for: .editingChanged)
action에는 해야할 일을 @objc로 작성해서 넣어주고 for에는 .editingChanged를 선택하여 변경이 될 때마다 action이 실행되도록 구현하면 된다.
'Software Engineering > iOS' 카테고리의 다른 글
[iOS] DateFormatter의 비용?! (1) | 2022.02.12 |
---|---|
[iOS] 키보드가 컨텐츠를 가리지 않게 하는 법 (0) | 2022.02.12 |
[iOS] Keychain (0) | 2022.01.23 |
[iOS] 이미지의 크기 자체를 줄이고 싶다면? (0) | 2022.01.22 |
[iOS] 이미지를 받고, 이미지의 크기를 크롭하기 (0) | 2022.01.22 |