본문 바로가기

iOS

(63)
[iOS] UITextField 입력시 자동으로 키보드 띄우기, 키보드 위에 버튼 올리기 +_+ | InputAccessoryView 안녕하세요. 지난번 포스트와 같은 키워드인 이번 포스트는 UITextField를 터치할 때, 키보드 올라오도록 하는 방법과 이때 키보드의 실시간 위치를 파악하지 않고도 키보드 위에 버튼을 쉽게 올릴 수 있는 InputAccessoryView. 지정된 텍스트 필드 이외의 영역을 터치할 때 텍스트 필드 이외의 영역이라면 키보드를 내려가게 하는 (resignFirstResponder() ) 방법에 소개하려고 합니다. 1. InputAccessoryView in UITextField 텍스트 필드가 first responder가 될 경우 시스템 키보드가 자동으로 올라옵니다. (예전에 새로 알게 된 개념2 주제로 정리했었는데. 까먹었다는게 사실..ㅠ) 간단 요약하자면, input view는 사용자가 UITextFi..
[iOS] UITextField placeholder 색 변경하는 방법 안녕하세요. 이번 포스트는 텍스트 필드를 커스텀 중에 placeholder 색을 변경하는 방법을 소개하려고 합니다. "그룹 이름을 검색하세요." 이 부분이 텍스트 필드인데 오랜지로 깔 맞춤하면 좋을 것 같아서 UITextField의 속성을 찾아봤는데 String타입의 placeholder의 color 변경하는 속성은 없었습니다. 이럴 땐 attributedPlaceholder 속성을 사용하면 됩니다. 얘도 마찬가지로 텍스트필드에 text가 없을 때 attributed로 styled된 string이 텍스트 필드에 보여집니다. (= placeholder) 이를 사용하면 시스템에서 정의된 placeholder 색이 아닌 내가 원하는 방식으로 지정할 수 있습니다. (NSMutableAttributedString..
[iOS] PrepareForReuse() 의 중요성 | UICollectionView 안녕하세요. 오늘은 앱 개발 하다가 다시 한번 prepareForReuse()의 중요성을 깨닫고 개념과 제가 마주한 에러를 해결한 경험을 소개하려고 합니다. (23.07.23)재사용 큐 탐구 포스트 링크 1. prepareForReuse()란? 컬랙션 뷰를 사용할 때, 새로운 cell을 보여줄 때마다 특정 데이터를 바탕으로 cell 인스턴스를 만드는 것은 메모리 사용량이 많아집니다. guard let cell = collectionView.dequeueReusableCell( withReuseIdentifier: MyCell.id, for: indexPath) as? MyCell else { return .init() } 그러기에 컬랙션 뷰를 만들 때 재사용하고 싶은 cell을 등록하고 cellForRo..
[iOS] UITextField 비밀번호 입력시 문자 가리는 방법 | Strong Password 경고 안녕하세요. 앱을 개발중인데 SignUp page에서 텍스트필드에 암호를 입력할 때 가리는 방법에 대해서 작성하려고 하빈다. 그리고 마주한 Strong Password에 대한 제 해결 방법을 소개하려고 합니다. 제 xCode 버전은 14.3이고 iOS minimum target 13입니다. UIKit에서 키보드 입력은 보통 UITextField로 쉽게 받을 수 있는데요. (한글 영어 할 것 없이 쉽게 받아져서 좋은것 같아요.. readLine()은 한글 입력받으면 이상하게 받아지던데..) let textField = UITextField() textField.isSecureTextEntry = true textField.textContentType = .password UITextField로 비밀번호를 ..
[xCode 14.3] 프로젝트 내 Info.plist 파일 위치 마음대로 변경하는 방법 안녕하세요. 이번 포스트는 Info.pList 디렉터리 위치를 이전했을 때 설정하는 방법에 대해 소개하려고 합니다. 1. Info.plist 위치 변경시 build.phase에서 수정해야 할 것 프로젝트 안에 Support 파일을 만들어서 추가한 경우 요 파일 경로를 보시면 이렇게 변경되어 있습니다. xcodeproj의 target -> BuildSettings에 들어가서 이 경로를 보면 위에있는 경로와 다르게 /Support/가 없습니다. 추가 해주면 됩니다. 프로젝트 루트 파일을 Source로 변경했을 때 Info.plist 위치 또한 변경됩니다. 이 또한 xcodeproj -> target -> BuildSettings에서 변경하면 됩니다.
[xCode 14.3] 어쩌다보니 익숙해져버린 CodeBase 초기 세팅 | Without Storyboard 안녕하세요. 이번 포스트는 코드베이스로 개발을 자주하는데 직접 프로젝트 초기 세팅을 코드베이스로 해야만 했을 때, 여러 블로그들의 글과 다르게 버전이 업데이트 되버린 제 xcode의 xcodeproj에서 해매면서 찾아낸 codebase 세팅 방법에 대해서 소개하려고 합니다. 현재 제 xCode 환경은 14.3입니다. 초기 프로젝트 만들었을 때, 스토리보드 파일만 삭제했을 경우 앱의 메인 thread인 Thread 1에서 Main.storyboard 타입의 소스파일을 찾을 수 없다는 에러가 발생됩니다. Info.plist 파일에 설정된 storyboard name이 Main인 스토리보드 파일을 로드하기 때문입니다. 요고 행 과감히 삭제하고 프로젝트 타겟에서 Build Settings 에 들어갑니다. 요고도..
[Swift] 네비게이션 바 커스텀으로부터 살아남기.. UIBarButtonItem 네비게이션 바에 다음과 같은 기능을 추가해야 했습니다. ( 선 제외 ) 앱 로고와 두개의 버튼을 추가해야하는데 버튼 사이에 spacing이 필요했습니다. 처음엔 UINavigationBar를 대체하는 커스텀 UIView 안에 UILabel과 UIButton 총 3개의 컴포넌트 포함하도록 만들어서 네비게이션 바의 subview에 추가 했었습니다. (상당히 쉽다는 생각이 들었습니다.) 새로운 뷰로 push하기 전에 네비게이션 바를 없애야 했습니다. 아무리 커스텀 UIView의 subview를 nil로 하던,, 네비게이션 바에 addSubview로 추가한 커스텀 컨테이너 네비바를 nil처리하던 계속해서 다른 뷰컨트롤러를 push할 때 이전 네비 바의 모양이 상속 되었습니다.. ( 쉽지 않네요 ) 뒤늦게 알게된..
[Swift] UI Compoenet에 Shadow 적용 방법 | shadowPath | 쉐도우가 적용되지 않았던 이유... 안녕하세요. 이번 포스트는 shadow 적용하는 방법과 shadowPath를 사용한 shadow rendering 최적화 방법, 그리고 쉐도우가 적용이 안됬던 제 경험을 글로 작성했습니다. 1. UIView에 shadow 적용하는 방법UIView에 쉐도우를 적용하는 방법은 기본적으로 layer 속성을 이용하면 됩니다. let view = UIView() ... view.layer.shadowColor = UIColor.black.cgColor view.layer.shadowOpacity = 0.5 view.layer.shadowOffset = CGSize(width: 2.0, height: 2.0) view.layer.shadowRadius = 4.0 1. layer에서 보여질 shadow color를 ..