전체 글

Swift 5.7 릴리즈 - 언어 및 표준라이브러리, 개발자 경험
아래 글은 원문 링크에 구글 번역과 조심스러운 의역으로 이루어져있습니다! 틀린 내용이 있으면 댓글로 알려주세요:) 원문 바로가기 Swift 5.7 Released!Swift 5.7 is now officially released! Swift 5.7 includes major additions to the language and standard library, enhancements to the compiler for a better developer experience, improvements to tools in the Swift ecosystem including SourceKit-LSP and the Swifwww.swift.org Swift 5.7 가 정식 출시되었습니다!Swift 5.7에는 언..
![[SwiftUI]커스텀 백버튼 백 제스처 시 화면 멈춤 이슈 해결](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbsZlHF%2FbtrLLzcwuRt%2FAAAAAAAAAAAAAAAAAAAAAAiAADAbCD44eW7zma0tS43m1aw7ICvzUW9U3L8HVGqV%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DuWHOhPzL9YW9ni3FVTlAyeqNKmY%253D)
[SwiftUI]커스텀 백버튼 백 제스처 시 화면 멈춤 이슈 해결
XCode : 13.2.1타겟 버전 : 14.0 이후시뮬레이터 버전 : 15.2개요프로젝트를 진행하면서 디자이너님의 요구사항에 맞게 백버튼을 커스텀해야 할 일이 생겼다. 그러나 SwiftUI에선 아직 NavigationBar 백버튼의 디자인을 바꿀 수 있는 옵션을 제공하지 않아 커스텀하여 사용하기로 했다. 그러나 커스텀 백버튼을 만들고 hidden 옵션을 주면 백 제스처가 동작하지 않았고.navigationBarHidden(true)찾다보니 UINavigationController를 직접 수정하면 해결 할 수 있다고 했다.interactivePopGestureRecognizer?.delegate = self그러나 Navigation Stack에 뷰가 하나밖에 없는데 뷰를 pop 해버리면 안되기때문에 vi..
![[iOS]카카오 로그인 구현 시 키 값 숨기기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcfIP5t%2FbtrLTBTNlLl%2FAAAAAAAAAAAAAAAAAAAAACkYvyFlii1OGW7tiMbsBaBhEC7-g4hUJvSD3byCx5-r%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DDlg857ZBQ8JsT8aZcrTiPlZ%252BeM0%253D)
[iOS]카카오 로그인 구현 시 키 값 숨기기
카카오 로그인 iOS SDK 공식 문서설치방법 : https://developers.kakao.com/docs/latest/ko/getting-started/sdk-ios사용방법 : https://developers.kakao.com/docs/latest/ko/kakaologin/ios앱을 출시하려면 필수가 되어버린 소셜 로그인 기능 중 국내에서 가장 많이 사용되는 카카오 로그인!그런데 SwiftUI 에서 iOS SDK 2.4.0 버전을 다루는 글이 많이 없는 것 같아 직접 맨 땅에 헤딩해보고 사용법과 문제점을 정리해보려고 합니다.개발 환경Xcode : 13.1target iOS : 14.0Kakao iOS SDK : 2.4.x로그인 방법자세한 내용은 카카오 공식문서에서 확인하실 수 있습니다.1. Inf..
![[iOS][Swift] 프로토콜 vs 인터페이스 차이점](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FB6Ypp%2FbtrLLWL5dJw%2FAAAAAAAAAAAAAAAAAAAAAHh1RcDdt8GNisNV6hwFie6ASxZXBnMBMtLCL1S67vtM%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DvpSFqg%252Fpt1372wLJDbdKgmjNVSo%253D)
[iOS][Swift] 프로토콜 vs 인터페이스 차이점
Swift를 공부하다보니 protocol 이란 개념이 많이 등장해서 protocol 이 정확히 뭘까하고 자료들을 찾다가, Swift는 프로토콜 지향 언어(Protocol-Oriented-Language) 라는 것을 알게 되었다. 그런데 읽다보니 Java에서의 interface 와 비슷한 것 같았고, 무엇이 다른지 알아보았습니다. protocol(프로토콜)은특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다. 구조체, 클래스, 열거형은 프로토콜을 채택(Adopted) 해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있습니다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다(Conform) 고 표현합니다. 타입에서 프로토콜의 요구..
![[iOS][Swift] guard 문](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FboLjS1%2FbtrLQx5n2gL%2FAAAAAAAAAAAAAAAAAAAAAK27LAaSX6CQpWU2Db6YbiQvD5vLTqinpiB14paqAJzU%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DK7Qkq6oG74IDs04Gy%252BFDrpXMBPQ%253D)
[iOS][Swift] guard 문
고수들이 짠 코드들을 보다보면 모르는 구문들이 많아 코드가 이해안될 때가 많다. 그중 하나가 guard 이다. guard 문은 조건들을 걸러낼 때 사용한다. 그럼if 문을 사용하면 되는데, 왜 guard 를 사용하냐고 묻는다면 그 이유는 가독성에 있다.먼저 guard 문의 사용법 부터 알아보자 guard 사용법문법guard " 조건 " else { 조건이 false 일 때 실행될 구문 } 사용 예시// someValue 가 0이 아닐때만 출력func someFunc(someValue: Int?) { guard someValue != 0 else { return } print(someValue)}someFunc(someValue: 5)// 5if 문과 비교string을 전달받아 출력해주는 함수를..
![[iOS][Swift] 코딩 컨벤션](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FovxWd%2FbtrLLiPEquc%2FAAAAAAAAAAAAAAAAAAAAALLIumC_nHxcPsu7Z2h-RyweVNtfU38fPUB8Ifk4wSon%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D1lCzoAi2BXQAxPBsmn%252FfdI%252FMWYI%253D)
[iOS][Swift] 코딩 컨벤션
Class 는 Pascal Casing을 사용한다.class ApplicationManagerclass SoftwareSetting로컬 변수, 함수, 함수 파라미터는 camel Casing을 사용한다.func openFunction(someParameter: Int) { let someNumber: Int = 0}상수의 경우 대문자와 밑줄을 사용한다.let CONST_NUMBER = 100변수이름 앞에 접두사를 붙인다.//멤버 변수 (m)let mAge: Int = 24//Bool 타입 (b)let bClicked: Bool = falselet mbClicked: Bool = false//enum 타입 (e)enum eDirection { case North. South }리턴 값이 있는 메소드는 ..
![[iOS][Swift] Class 와 Struct](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FEgTFh%2FbtrLPdF8fWT%2FAAAAAAAAAAAAAAAAAAAAAC4ULF_eID-06v-kZDdeAjc-JgLWwxZwGopHI1DePrjG%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DJajOhrT39Ozrh8ZQ%252FtxrdwKcMQ8%253D)
[iOS][Swift] Class 와 Struct
클래스와 구조체(Class and Structure)클래스와 구조체는 프로그램 코드 블럭을 만들도록 유연하게 구성하는 것이 일반적인 목적이다.다른 언어와 달리 Swift는 사용자 클래스와 구조체를 위한 인터페이스 파일과 구현 파일을 따로 나누어 만들 필요가 없다.단일 파일에 클래스나 구조체를 정의하고, 외부 인터페이스로 다른 코드에 사용하기 위한 클래스와 구조체는 자동으로 만들어진다. 클래스와 구조체의 공통점여러 변수를 담을 수 있는 컨테이너데이터를 용도에 맞게 묶어 표현하고자 할때 용이함프로퍼티와 메소드를 사용하여 구조화된 데이터와 기능을 가짐하나의 새로운 사용자 정의 데이터 타입을 만듬초기화, 확장(extension) 가능프로토콜 사용 가능서브스크립트(subscript) 사용 가능"."을 사용해 하위..
![[Blog] 블로그 이사 Git 에서 Velog로](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb2QU6l%2FbtrLNwlOKgR%2FAAAAAAAAAAAAAAAAAAAAAC42UBaRiajv9RtgfTNqRyDcnQLM4QB0chxQctCS4gir%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D2rSeNBTFuWHnNwRzEGB1xdO9Fu4%253D)
[Blog] 블로그 이사 Git 에서 Velog로
블로그 시작 나는 평소 개발을 공부하면서 내용을 따로 정리하던 습관이 없었다. 평소처럼 구글링을 하며 삽질을 하던 중 어딘가 익숙한 느낌이 들어 생각해봤더니 예전 프로젝트에서도 사용했던 건데 또 검색하고 있는 나를 발견할 수 있었다. 분명 예전에 읽어보고 이해했다고 생각한 내용인데 또 검색하고 있다는 건 제대로 이해하지 못했었단 증거다. 그래서 새롭게 알게 된 내용이나 프로젝트를 진행하며 느낀 점을 글로 남겨보면 기억에도 잘 남고 훗날 비슷한 문제가 생겼을 때 참고할 수 있지 않을까? 해서 시작하게 되었다. 블로그 개설 서치를 해보니 개발블로그로는 Git, Velog, Medium, Tistory 를 주로 사용하는 추세인 것 같았다. 각각의 장단점이 있는 것 같았다. 플랫폼 비교 Git : 원격 저장소를..
![[Jekyll] 블로그 아이콘 변경하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FZhlm9%2FbtrLSvfaf9q%2FAAAAAAAAAAAAAAAAAAAAAH8ZTq8To2syiknWNvYDFiMLWfYd0q5A7b_EZvU5pSVY%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dee82FrU%252BZkARfYDiUHzoH6TmGrg%253D)
[Jekyll] 블로그 아이콘 변경하기
이 글은 TeXt theme 기준이므로 개인마다 조금씩 다를 수 있습니다. 0. 블로그 내꺼만들기 포스트를 하기에 앞서 블로그를 들어올때마다 기본스러운 UI들이 마음에 안들었다. 네비게이션부터 시작해 색상 등 마음에 안드는 것들 투성이었지만 우선 가장 눈에 띈 건 저 은행잎 파비콘이었다. 기본 파비콘이다보니 아직 내 블로그가 아닌 느낌 그래서 파비콘을 수정하기로 했다 ! 1. 이미지 다운로드 우선 구글에서 원하는 이미지의 .png 확장자 파일을 다운받아야 합니다. 저는 Siri의 영롱한 디자인에 꽂혔습니다.. 2. PNG to ICO {%- include snippets/prepend-baseurl.html path='/assets/apple-touch-icon.png' -%} {%- include sn..
![[Jekyll] Navigation 수정하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc9GDqZ%2FbtrLLYpFn1r%2FAAAAAAAAAAAAAAAAAAAAAFhi_koebx6l7rvZ6sjBgUkR1hb0Hs5tZfoIiI7WzFFp%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DQu4yW0mqrxJMKNnqQrBLioGem7U%253D)
[Jekyll] Navigation 수정하기
TeXt 테마를 기준으로 작성하였습니다. 👍 Navigation에 Home을 추가 이제 갓 만든 블로그지만 내 입맛에 맞게 조금씩 수정하고 있는데, 첫번째로 메인에서 Navigation이 거슬렸다. TeXt 에서 제공하는 예시 페이지 나도 이런식으로 홈, 카테고리, 태그 등 여러 Navigation을 제공하고 싶은데 현재 내 블로그는 초기 세팅값으로 아카이브, 소개만 있다. ✌️ navigation.yml 수정 여기를 보면 data/navigtaion.yml 파일을 수정하라고 되어있다. _data 폴더 를 보면 yml파일이 여러 개 있는데(아직 나머지는 어떻게 사용하는지 모른다) 그중 Navigation.yml 을 열어 수정한다. 딱 봐도 알수 있듯이 Title 은 보여지는 이름이고 URL 은 눌렀을 때..
![[iOS][Swift] 투두리스트 앱 만들기 - UI 구성 AutoLayout Constraint 걸기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbn9fRQ%2FbtrLMAhMd8i%2FAAAAAAAAAAAAAAAAAAAAAMdkXndlQ99nyJ_OKuDLdFCuTmlD3V60vbughw4hUEdg%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DFkRLeXSGhXymHcx5Uizj%252F1y17iM%253D)
[iOS][Swift] 투두리스트 앱 만들기 - UI 구성 AutoLayout Constraint 걸기
1. 결과 화면2. 레이아웃 구성3. 구현 할 기본 기능투두리스트 조회투두리스트 등록 및 삭제투두리스트 완료 체크4. AutoLayout스택뷰는 Safe Area 에 딱 맞춰줍니다.위에있는 뷰의 Bottom 을 Superview 의 Top 부분으로부터 100 만큼 떨어지도록 제약을 걸어 어떤 사이즈가 와도 항상 같은 크기를 유지할 수 있도록 해줍니다.아래 뷰는 윗 뷰 설정과는 반대로 아랫뷰의 Top 을 Superview 의 Bottom 으로부터 -100만큼 떨어지도록 제약을 걸어서 맨 아랫부분으로부터 항상 100만큼 떨어지도록 해줍니다.이렇게 설정하면 자연스레 남은 부분은 Table View 의 차지가 됩니다.
![[iOS][Swift] 오토레이아웃 개념잡기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbwZcWz%2FbtrLQnob7Hx%2FAAAAAAAAAAAAAAAAAAAAAFyMn11XKZzf_n4F4c8K0_DknbdboYDSXCrodDeDGZYF%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DwDCS9p%252FLo4tICkN9xBc%252FhEfJDj0%253D)
[iOS][Swift] 오토레이아웃 개념잡기
프로젝트 만들기Create new XCode project 를 눌러 오토레이아웃을 공부할 새 프로젝트를 만들어 보겠습니다 !카테고리는 App 으로 하고이름은 PracticeAutoLayout 으로 하겠습니다.저희는 스토리보드에서 AutoLayout 을 연습해볼거니까 Main.storyboad 로 가줍니다.Label 만들기그다음 테스트 해 볼 Label 을 하나 만들고 잘 보이게 하기 위해예쁜 색백그라운드 색상을 넣어줍니다 !오토 레이아웃 개념Swift 의 AutoLayout 개념은 해당 뷰의 x, y 위치 와 해당 뷰의 가로 세로 크기 를 알려주면 Swift 내부에서 뷰의 위치를 계산해 동적으로 렌더링 하게 됩니다.오토 레이아웃이 필요한 이유Q. 그냥 마우스로 요소들만 필요한 위치에 갖다 놓으면 되는데 ..