iOS (69) 썸네일형 리스트형 [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를 .. [Swift] MVVM에서 Combine을 활용한 ViewModel Input/Output binding 개념 완벽 부수기 +_+ | MVC와 MVVM 차이 진짜 뿌수기!!!! 안녕하세요! 이번 포스트는 MVVM 패턴을 사용할 때 Conbine framework로 ViewModel과 View를 Input/Output binding하는 방법에 대해 소개하려고 합니다. 뷰에서 발생 가능한 Input!, 그리고 View가 화면을 그려야 할 State!를 ViewModel은 Output!함으로 뷰의 render가 진행됩니다. 소프티어 부트캠프 활동을 하며 새로 배운 개념이 많아 기존의 글을 리빌딩 했습니다.그 전에! MVVM과 MVC 아키텍처 패턴의 차이가 무엇인지 명확하게 알아야합니다. 둘의 차이가 무엇인지 아시는 분들만이 MVVM을 잘 활용한다고 할 수 있습니다. 저는 제 나름대로 MVVM과 MVC 아키텍처의 차이점을 정리해봤습니다(관련 포스트 링크). MVC, MVVM 차이를 이.. [swift] UIImageView shadow 적용 안되는 이유.. | clipsTobounds 오늘은 udp socket 통신을 관련 공부를 c언어로 학습하고 swift로 적용하려던 중에 새롭게 알게된 내용이 있습니다. UIImageView에 쉐도우를 적용하려고 했었는데 적용이 안됬습니다.. 이때 제 이미지 뷰의 선언은 아래와 같습니다. let photoView: UIImageView = { let iv = UIImageView() iv.image = UIImage(named: "flower") iv.clipsToBounds = true iv.translatesAutoresizingMaskIntoConstraints = false iv.layer.cornerRadius = 7 iv.layer.shadowColor = UIColor.gray.cgColor iv.layer.shadowOpacity =.. 이전 1 2 3 4 5 6 7 ··· 9 다음