일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 바로가기
- 푸시 데이터 저장
- FlutterView MethodChannel
- 플러터 뷰 컨트롤러
- 노티피케이션 익스텐션
- 안드로이드 숏컷
- 앱 꺼졌을 때 푸시 데이터 저장
- 스위프트 UserDefaults
- flutter 회전
- 스위프트 푸시
- native flutter view
- 앱 백그라운드 푸시 데이터 저장
- 스위프트 카메라
- 스위프트
- Swift flutterview
- swift sms
- Flutter UIKitView MethodChannel
- 안드로이드 FCM
- 스위프트 앨범
- 스위프트 웹뷰
- silent push
- 안드로이드 앨범
- 안드로이드 에러
- swift autolayout
- swift 문자
- Flutter NativeView
- flutter rotate
- NotificationService Extension
- 스위프트 테이블 뷰 셀
- Swift flutterviewcontroller
- Today
- Total
Things take time
[SWIFT] UITextField의 Under Line 추가하기(밑줄) 본문
[원리]
텍스트 필드의 모양은 대부분 아래와 같다.
스타일의 경우 4개로 제공되긴하는데.. 그 것도 맘에 들지 않을때, 밑 줄을 긋고 싶을때! 아래와 같이
이런 경우엔 스토리보드의 메뉴로는 해결할 수 없다.
프로그래밍 상으로 접근해야한다.
textField.borderStyle = .none let border = CALayer() border?.frame = CGRect(x: 0, y: textfield.frame.size.height-1, width: textfield.frame.width, height: 1) border?.backgroundColor = UIColor.white.cgColor textfield.layer.addSublayer((border)!) textfield.textAlignment = .center textfield.textColor = UIColor.white
이처럼 하면 된다. 당연히 textFiled는 아울렛이든, 선언한 변수든 맞아야한다.
이처럼 하면 위의 결과처럼은 나오지만 문제가 발생한다.
무조건 발생하는건 아니지만, 바로 밑 줄이 제대로 안그어질때가 있다. 이것은 viewDidLoad같은데서 사용했을 경우 발생하므로.. 이 쪽에서 사용하지 말고
viewDidLayoutSubviews
이 함수를 오버라이딩하여 사용해야한다. 말 그대로 레이아웃에 걸린 addSubView같은(레이어도 뷰의 하위) 것들이 모두 완료 된 후 호출되기 때문이다.
또 중요한 것 하나,
이 함수는 한 번만 호출되는 것이 아니다. 화면이 변경되고, 뷰에 있는 것이 변경될 때마다 호출이 되기 때문에.. 입력할 때 마다 선이 생성된다고 이해하면 된다. 우연히 잘 맞으면 하나의 선으로 보이지만, 아닌 경우 선이 두 줄 이상으로 생성되기도 하기 때문이다.
이 때는 저 border란 변수를 옵셔널 + 전역 변수로 선언하여 nil 체크를 하여 없을 때만 생성되게 하면 된다.
'iOS (기능)' 카테고리의 다른 글
[SWIFT] Create UITableView programmatically, 테이블 뷰 코드로 (0) | 2017.11.10 |
---|---|
[SWIFT] 네비게이션 컨트롤러가 있는 뷰 컨트롤러 열기 (0) | 2017.11.10 |
[SWIFT] 문자 메시지 보내기 (1) | 2017.11.02 |
[SWIFT] 스크롤할 때, 하단의 탭바 숨기기(보이기) (0) | 2017.10.30 |
[SWIFT] UITbableView Header, 테이블 뷰 헤더 추가 및 고정 해제 방법, 헤더 구분선(Seperator)추가 (0) | 2017.10.27 |