반응형

Old_SWIFT(221012) 68

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: - 주석제목 앞에 "//"가 있으니 그냥 주석처리 되겠지~ 그러면 이게 뭐가 특별하냐 귀찮기만하지...

행렬의 곱셈

안녕하세요. KataRN입니다. 오늘은 행렬의 곱셈에 대해서 알아보겠습니다. 행렬의 곱셈의 경우 행과 열을 곱해야되는데 필요할때마다 저는 돌려서 쓰는데 효율이 별로 안좋은것 같아서 효율좋은 코드를 남기려고합니다. 이건 제가 임의로 만든 코드인데 그냥 그럭저럭인것 같아요... func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { var answer = Array(repeating: Array(repeating: 0, count: arr2[0].count), count: arr1.count) let arr3 = convertArr(arr2) for i in 0..

스토리보드 없이 코드로 UI구현하기

안녕하세요. KataRN입니다. 요즘 참여중이 공모전에 제출할 앱이 얼추 마무리가 되어서... 오랜만에 글을 쓰게되었네요... 기능구현을 실험하다싶이 이것저것 많이 시도했더니 쓸내용도 많아서 또 미루고 미루고.... 그래도 용기내서 다시 글을 작성해봅니다... 우선 제가 해본것중에 가장 만족스러웠던 스토리보드 없이 코드로만 구현하기입니다. 스토리보드로 구현할 경우 장점이 명확했습니다. 1. 빌드가 빨라요. 2. 아카이브도 빨라요. 3. 다른사람이 보기에 의외로 가독성이 좋아요.(?????) 저는 사실 스토리보드의 장점은 가독성이라 생각했었습니다. 그런데 의외로 다른사람이 봤을때 가독성이 훨씬 좋다는 이야기를 들었습니다. 아 물론 제가 스토리보드없이 만들면서 코드 스타일이 많이 바뀐점도 있기 때문에 3번은..

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 그러면..

반응형