⭐️ 개발/iOS & Swift
[iOS] Bounds 와 Frame 총정리
노션으로 보면 보기 좋아요...ㅎ -> 눌러눌러 쉽게 이해되라고 영상을 가져와봤다. 이해해라. 알아서. 아쉬우니까,,, 움짤로 만나부자~~ 참고 링크 - https://babbab2.tistory.com/44?category=831129 iOS) Frame vs Bounds 제대로 이해하기 (1/3) 안녕하세요 :D 소들입니다 후후......... 오늘은 Frame과 Bounds에 대해 알아볼 거예욥...! 그 있잖음.. UIView에 등장하는 두 놈... 이전 포스팅 에서 CGRect는 View의 위치(origin)와 크기(size)를 나타내기 위.. babbab2.tistory.com https://zeddios.tistory.com/203 iOS ) Frame과 Bounds의 차이 (1/2) 안녕하..
[iOS] MapKit 사용해서 위치 자동완성 검색 기능 구현해보기
애플 기본 날씨앱을 클론코딩을 하면서 MapKit을 통해 위치 자동완성 검색 기능을 구현해보았습니다. MapKit 이 뭘까요? 우선 애플 공식 문서를 확인해볼까여.. MapKit은 다양한 기능을 제공하지만 (지도나 인공위성 사진을 사용할 수도 있고, 특정 위치를 불러올 수도 있는...) 저는 그 중에서도 사용자가 목적지 또는 관심 지점을 쉽게 검색할 수 있도록 텍스트 완료(자동 완성) 기능을 사용해보았습니다. 저는 SearchBar에 검색을 갈기면 결과가 해당 VC의 TableView에 뜨도록 구조를 잡아줬습니다. 즉, UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource 다 채택해줬다는 뜻. import MapKit 을 해주고 시작합니다. 단..
[iOS] Blur Effect 사용해보기
Blur Effect 사용해보기 → 도시 검색뷰 UI 만들려고 뽀시락대다보니,, 아무리 alpha 값을 줘도 뒷배경이 불투명해지는 게 아니라 점점 걍 투명해지더라구요..? 엥 그게 아닌데..? 그래서 찾아보니 Blur Effect를 줘야 하는 것 같더라구여들. 우선, ui 설계는 이렇습니다. search bar가 있는 부분에 ui view를 하나 따로 깔아줬습니다. 전체 코드 먼저 봐봅시다! // MARK: - Properties let topView = UIView().then { $0.backgroundColor = UIColor.lightGray.withAlphaComponent(0.7) } let searchTV = UITableView().then { $0.backgroundColor = .cl..
[iOS] UIButton에 NSMutableAttributedString 적용해보기
UIButton에 NSMutableAttributedString 적용해보기 오늘은 애플 기본 날씨앱의 위 사진과 같은 버튼을 만드는 방법에 대해 정리해보려고 합니다! 누르면 섭씨와 화씨로 온도를 바꿔주면서 버튼의 특정 부분의 색이 변하는 버튼입니다. NSMutableAttributedString을 통해서 문자열의 특정 부분의 색상이나 폰트 등을 바꿔줄 수 있었는데 버튼도 이와 마찬가지입니다. 우선, 버튼 컴포넌트에 대한 코드부터 차례대로 봐봅시다. * Then 라이브러리를 사용했습니다. let switchButton = UIButton().then { // 버튼의 기본 특성 - 색상, 폰트, 동작 $0.setTitleColor(.white, for: .normal) $0.titleLabel?.font =..
[iOS] TableView 최상단 cell, safeArea 무시하고 배치하는 법?
애플 기본 날씨 앱에서 해당 화면을 구현하기 위해 TableView의 최상단 cell이 safeArea까지 영역을 잡아주는 방법을 찾아서 정리합니다. contentInsetAdjustmentBehavior 을 사용해주면 됩니다. 결론만 말하자면,,, 이 아래 코드를 통해서 safeArea 영역을 무시하고 잡아줄 수 있습니다. tableView.contentInsetAdjustmentBehavior = .never 근데 그럼,, contentInsetAdjustmentBehavior는 뭘까요? -> 조정된 content Offset을 결정하는 행동...... 응? 그니까,,, -> 요 아이는 scroll View의 content area를 수정하기 위해서 SafeAreaInset을 사용하는 방법을 지정한다..
[iOS] 데이터 직접 전달 방식(4) - NotificationCenter을 통해 전달
▶️Segue prepare 메소드를 통해 전달하는 방식 ▶️Property에 접근해서 전달하는 방식 ▶️ Delegation을 통해 전달하는 방식 뷰를 전환하며 데이터를 전달하는 방식은 크게 2가지로 나뉩니다. 바로 직접 전달과 간접 전달이죠. NotificationCenter를 통해 전달하는 방식은 직접 전달 방식에 해당합니다. 🔆 SecondVC의 textField의 text를 VC의 textLabel로 전달할 거에요! VC : addObserver -> notification을 관찰한다. (전달받은 신호를 관찰해 함수를 실행) SecondVC : post -> notification을 뿌린다. (원하는 데이터를 전달) 1️⃣ NotificationCenter post 해주기 Notification..
[iOS] NotificationCenter?
🔹 Notification? observer들에게 전달되는 구조체로 정보가 담겨있고, 해당 알림을 등록한 observer에게만 전달됩니다. 구조체는 아래와 같이 구성되어 있습니다. 1️⃣ name : 전달하고자 하는 notification의 이름 (이걸 통해 알림을 식별) 2️⃣ object : 전달하고자 하는 데이터(객체) (없으면 nil) 3️⃣ userInfo : notification과 관련된 값 (없으면 nil) = extra data를 보내는데 사용 가능 🔹 NotificationCenter? (=NSNotificationCenter) notification이 오면 Observer Pattern을 통해서 등록된 observer들에게 notification을 전달하기 위해 사용하는 클래스입니다...
[iOS] Moya가 모야? - Moya로 Get 통신하기
Moya Library Github - https://github.com/Moya/Moya 오늘은 Moya에 대해 공부를 해보았는데요! 우선, iOS에서는 URLSession을 통해서 기본적으로 네트워킹을 진행합니다. 여기서 한 단계 추상화시킨 방식이 우리가 많이 사용하고 있는 Alamofire 라이브러리입니다. URLSession을 기반으로 하고 있죠! 🤔 그렇다면 도대체 Moya가 몰까요? Moya는 이런 Alamofire에서 한 번 더 추상화하였으며, 일반적으로 열거형(enum)을 사용하여 네트워크 요청을 타입 안전(type-safe)한 방식으로 캡슐화하는데 초점을 맞춘 네트워킹 라이브러리입니다. ❓타입 안전한 방식(type-safe)이 몬데? 찾아보니 스위프트는 Type Safety Languag..
[iOS] TextView - 플레이스홀더, 패딩, 글자 수 제한, 커서, 키보드 dismiss
📦 TextView - 플레이스홀더, 패딩, 글자 수 제한, 커서 색상, 키보드 dismiss 프로젝트를 하면서 TextView를 사용해 다양한 기능을 구현하게 되어 정리를 해봅니다! SnapKit과 Then 라이브러리를 사용하였습니다! Github - https://github.com/heerucan/iOS-Practice/tree/main/TextView%20Practice 우선, textView를 사용하려면 UITextViewDelegate 프로토콜을 해당 뷰컨에 채택해주고 위임처리를 해주어야 합니다. 1. Placeholder -> TextView는 TextField와 다르게 기본적으로 placeholder를 제공해주지 않기 때문에 textView.text를 통해 placeholder인 척 기능을..
[iOS] Alamofire Multipart/formdata를 통한 이미지 서버 통신
🌈 Multipart/formdata 형식를 통한 이미지 POST 방식 → 멀티파트는 Alamofire에서 제공해주는 기능으로 이미지를 data로 전환해서 전송하는 방식입니다. multipart/form-data 는 파일 업로드가 있는 양식요소에 사용되는 enctype 속성의 값중 하나이고, multipart는 폼데이터가 여러 부분으로 나뉘어 서버로 전송되는 것을 의미합니다. 우선, 서버에서 넘겨준 API 문서입니다. 👀 주의해서 봐야 할 것은 Content-Type 이 multipart/form-data 라는 점입니다. 따라서, request header 배열 영역에 잘 입력해줘야 합니다. 👀 두 번째로 Body 부분에서 이미지를 제외하고도 우리가 업로드 해줄 데이터가 있을 경우에는 multipart를..
[iOS] DateFormatter
노션으로 보기 🗳 오늘은 FSCalendar를 공부하기 위해서 DateFormatter를 먼저 공부해보려고 해요! DateFormatter는 날짜의 형식을 바꿔줄 때 사용합니다. 그러니까 날짜를 어떻게 보여줄 건지를 정하고 싶을 때 사용해요! 그럼 한 번 어떻게 쓰는지 알아볼까요? 우선 현재 날짜 및 시간을 출력해주기 위해서 아래와 같은 코드가 필요합니다. let now = Date() → Date() 자료형에 맞는 인스턴스를 생성해 현재 날짜와 시간을 알 수 있는데 Date에는 다양한 이니셜라이저가 있어요. 하나하나 차례대로 살펴보면,,, 1 ) init(timeIntervalSinceNow: TimeInterval) → 현재 시간을 기준으로 TimeInterval 만큼..
[iOS] Expandable TableView Cell 만들기
📦 Expandable TableView Cell 만들기 마켓컬리 클론코딩을 하다가 카테고리를 접었다가 펴주는 테이블 뷰 기능을 구현하게 되어 공부한 내용을 정리해보려고 합니다! 처음에는 어려울 것 같았는데 생각보다 엄청 간단하게 구현이 되어서 라이브러리를 쓰지 않아도 되겠다 싶었어요! (맨 아래로 내려가면 full code 보실 수 있습니다!) 테이블 뷰를 위한 세팅을 해주세요~~ 첫 번째로, 테이블 뷰에 들어갈 데이터를 위한 구조체를 하나 만들어 줍니다. struct cellData { var opened = Bool() var title = String() var sectionData = [String]() } - opened는 테이블 뷰 셀이 접혔는지 펴졌는지를 확인해주기 위한 변수입니다. - t..
[iOS] UIColor Extension 파일 만드는 법 (feat.Zeplin)
😊 UIColor Extension 파일 만드는 법 (feat.Zeplin) 우왕 ! UIColor Extension 적용해서 넣어주는 거 세상 쉬워서 정리하게 됐습니다! 이건 디자이너 선배님들이 얼마나 네이밍을 잘해주냐에 따라서 우리 클라들이 그저 편해지냐,, 아니면 고생하냐,, 일 뿐이야요. Zeplin에 가보면 Styleguide가 있을 겁니다! 거길 보면 바로 오른쪽 회색창에 코드로 친절하게 색상값이 정리되어 있는 거 보이죠? 디자이너분들이 네이밍 해주시면 그게 코드로 바로 적용되더라구요... 제플린 짱! 피그마가 싫고 제플린이 좋은 이유!! 저 코드를 그대로 긁어서 Xcode에서 Command + N 해서 Swift 파일 하나 맹그러서 네이밍 [ UIColor + Extension ] 으로 해주..
[iOS] NSMutableAttributedString : 문자열 특정 부분 색 바꿔주고 싶을 때
노션에서 보면 더 편해요 -> 🦋🦋🦋 😊 NSMutableAttributedString : 문자열 특정 부분 색 바꿔주고 싶을 때 📚 사용 방법 사진처럼 이런 유아이를 만들어 주려고 합니당. @마켓컬리 부분만 보라색인 라벨을 만들 겁니다! 제가 공부한 결과... 방법이 크게 2가지 정도 있는 것 같아여 이건 우선 1번째 방법인데 전 이걸 더 자주 쓰게 될 것 같습니다! 1-1. (첫 번째 방법) 특정 문자 색깔에 변화를 주고 싶은 경우 let footerLabel : UILabel = { let label = UILabel() label.text = "카카오톡 @마켓컬리 친구 추가하고 소식과 혜택을 받아보세요." label.font = UIFont.systemFont(ofSize: 12, weight: ..
[iOS] Then / DuctTape 라이브러리 사용기
노션에서 보면 더 편해요 -> 🦋🦋🦋 Then / DuctTape 라이브러리 사용기 📚 목차 1️⃣ Then 라이브러리 사용기 2️⃣ DuctTape 라이브러리 사용기 3️⃣ 나의 느낀 점... 이랄까? 나 이제 뭐쓰징? 🔥 Then 라이브러리를 사용해보자. https://github.com/devxoul/Then → closure를 사용해서 원하는 인스턴스를 생성해서 처리를 해주는 거라고.. 합니다... 와오.. 그 유명한 전수열 아요 개발자님이 맹그셨대요!!! 저는 귀찮아서 일단 시험삼아 써보려고 podfile에 입력해준 게 아니라 그냥 SPM으로 설치해줬습니당 ^^* 만약 코코아팟을 쓰고 있다면.. 걍 거기다가 한 방에 해줘도 좋을 거 같슴둥둥.. 스위프트 패키지 매니저 진짜 세상 편한데... 왜 ..