반응형

Old_SWIFT(221012)/기본이야기 32

CGPoint, CGSize, CGRect, Bounds, Frame

안녕하세요. KataRN입니다. 화면을 코드로 구현하다보면 CGPoint, CGSize, CGRect, Bounds, Frame를 자주 보게됩니다. (사실 면접 예상질문에 Bounds, Frame가 있었는데 그밖에 헷갈릴만한 것들도 이번기회에 정리하게 되었습니다.) 차례대로 간단하게 설명해보겠습니다. 우선 CGPoint, CGSize, CGRect 입니다. - CGPoint : 2차원 평면의 (x, y)좌표입니다. iOS 뷰는 왼쪽 상단이 시작지점이며 좌표는 origin(0,0)입니다. CGPoint(x: 0, y: 0) - CGSize : 너비와 높이를 가지는 구조체입니다. 그러므로 사이즈를 갖고있습니다. CGSize(width: 너비, height: 높이) - CGRect : 사각형의 위치와 크기를 ..

제네릭(Generic)이란?

안녕하세요. KataRN입니다. 오늘은 제네릭(Generic)에 대해서 알아보겠습니다. 제네릭(Generic)이란 타입에 의존하지 않는 범용 코드를 작성할 때 사용한다. Swift 표준 라이브러리의 대다수는 제네릭으로 선언되어 있다고 합니다.(Array, Dictionary도 제네릭타입입니다.) 우선 제네릭이 뭔지에 대해 설명드리기 위한 예제를 만들었습니다. func showParam(_ a: Int, _ b: Int) { print(a, b) } 파라미터가 뭔지 프린트하는 단순한 함수입니다. 보시다싶이 Int인 경우에만 작동합니다. 아래처럼 Double형태인 5.5를 넣었으니 안된다고 하겠죠. 제네릭을 사용하지 않았던 이전의 "나"였으면 아마 함수를 추가했을 것입니다. func showParam(_ a..

inout(In-Out) 파라미터

안녕하세요 KataRN입니다. 오늘은 inout(In-Out)에 대해 알아보겠습니다. 예를들면 a와 b의 숫자를 바꾸는 함수를 만든다고 가정해볼게요. 단순하게 생각하면 a값을 저장해놓고 a를 b로 b를 a로 바꾸면 될것같습니다?(더 좋은 예를 못찾겠어서.. 다른방법으로 함수를 만들면 되겠지만 inout 설명을 위해 만든점 양해바랍니다...) 그리고 당연히 이건 안된다고 뜹니다. 이유는 파라미터는 변수가 아닌 변경이 불가능한 상수이기 때문입니다. 이처럼 변경이 불가능한데 가능하게 하려면 inout을 쓰면됩니다. 그리고 함수 사용시 파라미터를 입력할때 & 이 기호를 붙여주면 함수가 종료되어도 결과는 지속됩니다. 아래의 예제를 설명할게요. func swap(_ a: inout Int, _ b: inout In..

Oh My Zsh...(feat. Terminal, git bash 한글 -> 영어, Home Brew, 테마(agnoster), 색상변경, iTerm2 설치, 폰트깨짐)

안녕하세요. KataRN입니다. 오늘은 Oh My Zsh에 대해 알아보겠습니다. Oh My Zsh가 뭘까요.. 화려한 테마와 편리한 기능을 가진.. 터미널 초보를 위한... 등으로 설명들을 해주시곤합니다만... 개인적으로 남들 쓰는거... 뭔가 인싸같은거... 멋진거... 등의 이유로 사용해보려고합니다.. 가끔 깃관련 내용을 보면 다들 비슷한 툴을 사용하는데 무슨툴이지?... 왜 나는 저게 없지... 등의 생각을 하곤 했었습니다. 그리고 주변에 물어볼사람도없고... 저게 뭘까... 부럽다... 물어보기에 용기가없다... 였는데 이게 Oh My Zsh더라구요... 그러면 나는 왜 갑자기 Oh My Zsh를 알게되었는지가 궁금하실텐데... 아래 살짝 남길테니 펴보세요... 더보기 git을 CLI로 하자 ->..

Xcode MARK 주석 만들기(//MARK: -)

안녕하세요. KataRN입니다. 오늘은 Xcode의 주석을 만드는 방법에 대해 알아보려고합니다. 저는 처음에 이걸 왜하나 했는데... 없으면 찾는데 시간이 너무 걸리더라구요.... 물론 코드가 너무 길어도 문제입니다만... 기본적으로 마킹을 해두는게 편하니까... 애초부터 긴걸 문제삼진 말자구요..ㅎㅎ.. 우선 단순하게 주석을 처리하는건 아시죠? //일반주석입니다. 코드 앞에 "//" 혹은 command + "/"를 하면 한줄 주석이 되는건 다들 아시죠?ㅎㅎ Xcode는 마크업? 마크라인? 명칭은 잘 모르겠네요... 다맞는거같기도하고... 아무튼 이게 특별한 기능이 있습니다. 일단 보시죠. // MARK: - 주석제목 앞에 "//"가 있으니 그냥 주석처리 되겠지~ 그러면 이게 뭐가 특별하냐 귀찮기만하지...

Xcode 프로젝트 이름변경(Cocopods 설치 포함)

안녕하세요. KataRN입니다. 오늘은 Xcode프로젝트 이름변경에 대해 알아보겠습니다. 최근에 개인적으로 앱을 만들고있었는데 갑자기 이름을 바꾸고 싶어졌습니다. 그리고 단순하게 프로젝트 이름만 띡~ 바꾸면 띡~ 하고 바뀔줄알았으나... 프로젝트에 붉은 이름들이... 그래서 전문적으로 바꾸는법에 대해 알아보고 사용할일이 있을때 그대로 따라해야겠더라구요. 생각보다 단계가 좀 있습니다. 하지만 오늘도 차근차근 진행해보겠습니다. 우선 이전글에서 만들었으나 쓰지 않았던 저의 removeTest라는 샘플앱의 이름을 newNameTest라는 이름으로 바꿔보겠습니다. 보시다시피 코코아팟도 설치가 되어있습니다. 우선 프로젝트를 실행하고 시작하겠습니다. 1. 왼쪽에서 프로젝트를 누르고 Enter을 치면 이름이 변경됩니다..

프로젝트에서 CocoaPods 제거하기

안녕하세요. KataRN 입니다. 오늘은 프로젝트에서 CocoaPods를 제거해보겠습니다. 어렵지 않습니다... 순서대로 따라해보세요. 1. 터미널(Terminal.app)을 실행합니다. 2. 터미널에 "cd"를 입력하고 한칸 띄고 프로젝트 폴더를 드래그 합니다. 그러면 아래처럼 디렉토리가 들어갑니다. 그리고 Enter~를 치면 기본 디렉토리가 아래처럼 바뀝니다. (아마도 cd는 Change Directory였던걸로 기억...) 그리고 아래 순서대로 입력해주세요. $는 빼고 입력해주세요~ 차례차례~ $ sudo gem install cocoapods-deintegrate cocoapods-clean $ pod deintegrate $ pod cache clean --all $ rm Podfile 그러면..

UNUserNotificationCenter 다루기(로컬 푸시 : local notification)

안녕하세요. KataRN입니다. 오늘은 로컬 푸시를 알아보겠습니다. 아 혹시나 APNs를 이용한 서버 푸시를 원하신다면! 아래 링크 참고 부탁드립니다! https://katarnios.tistory.com/54 UNUserNotificationCenter 다루기(서버 푸시 : remote notification, FCM(Firebase Cloud Messaging)) 안녕하세요. KataRN입니다. 오늘은 서버 푸시에 대해 알아보겠습니다. 로컬 푸시는 아래 링크 참고부탁드립니다! https://katarnios.tistory.com/53 UNUserNotificationCenter 다루기(로컬 푸시 : local notifica.. katarnios.tistory.com 이게 무엇인가?? 이런거입니다. ..

애니메이션(UIView Animation, CGAffineTransform) 만들기

안녕하세요. KataRN입니다. 오늘은 애니메이션(UIView.animate)에 대해 알아보겠습니다. 아래글을 참고하였습니다. https://hyerios.tistory.com/14 iOS CGAffineTransform 사용하기 사용할 CGAffineTransform는 구조체입니다. (https://developer.apple.com/documentation/coregraphics/cgaffinetransform) 가장 큰 특징은 뷰의 프레임을 계산하지 않고 CGAffineTransform을 사용해 2D 그래픽.. hyerios.tistory.com 애플에서 말하는 공식문서는 이렇다네요... 저에겐 좀 어렵네요...ㅠㅠ 좀 단순하게 정리해볼게요. 우선 애니메이션을 만들수 있는 함수 animate가 있네..

반응형