ios
-
iOS) Storyboard 없이 개발하기2 (iOS13 개정판)iOS 2020. 2. 10. 14:52
안녕하세요! 삼쓰입니다. 예전에 storyboard 없이 개발하기 라는 포스팅을 했었는데요. iOS13이 되면서 SceneDelegate 라는 녀석이 새롭게 추가되면서 방법이 아주조금 바뀌었습니다. SceneDelegate라는 녀석이 어떤 녀석인지부터 알면 좋겠지만 다음에 포스팅해보기로 하구요! 사실 SceneDelegate를 쓰지 않는다면 뭔지 몰라도 크게 문제는 없기 때문에... 오늘은 속성으로 SceneDelegate가 추가된 상황에서 storyBoard 없이 개발하려면 어떻게 해야하는지 간단하게 알아보고자 합니다 :) 어려울거 없답니다! 차근차근 빠르게 알아보죠! 기존에 하던대로 새 프로젝트를 하나 생성해주세요! SwiftUI를 사용할게 아니니깐 StoryBoard 로 선택해서 생성합니다! 그럼 ..
-
escaping closureSwift 2020. 1. 30. 16:20
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D escaping Closure는 뜻 그대로 탈출 가능한 클로저 입니다. 함수가 실행된 이후에 실행되는 클로저 입니다. 비동기로 실행되거나 completionHandler 등이 escaping closure 입니다. escaping closure안에서는 self 를 명시적으로 사용해줘야 합니다. var completionHandlers: [() -> Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionH..
-
UIBeizerPathiOS 2020. 1. 9. 01:17
iOS 개발을 하다보면 심심치않게 UIBeizerPath를 사용해야 할 상황이 생깁니다. 간단하게는 원부터 시작해서 정형적이지 않은 뷰를 그리고자 할 때는 거의 이녀석을 사용해야 합니다. 이름부터 살벌한 이녀석.. 같이 한번 정복해보도록 하겠습니다. path는 알겠는데 Beizer 우선 발음부터 쉽지 않습니다. 주로 베지에 라고 번역하시는 것 같더라구요. 베지에 곡선이라고 많이 알려져 있는데, 이 베지에 곡선을 그릴 경로를 지정해주는 역할을 UIBeizerPath가 해줍니다. 워낙 많이 사용되고 있고.. 사실 편법으로 사용법만 익혀도 간단한 건 해결할 수 있겠지만 원리를 이해하지 못하면 그 이상은 할 수 없겠죠?? 우선 베지에 곡선이 뭔지부터 확인해서 제대로 알아보자구요! Beizer Curve 베지에 ..
-
2019년 회고 그리고 2020일상/끄적끄적 2020. 1. 5. 17:33
역사를 잊은 민족에게 미래는 없듯 과거의 나를 잊으면 발전은 없다. 2020년 새해를 맞이하며 나의 2019를 돌아보고 반성하고 발전하는 시간을 가져보고자 한다. 2019, 난 무엇을 했는가. 2019년은 내게 조금 특별하다. 내 인생의 방향을 정한 터닝포인트랄까. 18년 11월 iOS개발자가 되겠노라 결심하였고 그렇게 벌써 1년의 시간이 흘렀다. iOS Developer 아무런 지식도 없이, 조언도 없이 iOS 개발자가 되겠다고 뛰어들었다. 일단 하고보면 어떻게든 되겠지. 말그대로 맨 땅의 헤딩이었고, 그만큼 엄청난 삽질들을 했다. 19년은 특별한 성과보다는 "삽질 기록기" 이다. 우선 닥치는 대로 좋다고 하는 자료들을 찾아다녔다. boostcamp, stanford CS193p, LBTA Youtub..
-
map flatMap 그리고 compactMapiOS 2019. 12. 30. 18:27
오늘은 비슷한 듯 다른 map 3총사에 대해 알아보겠습니다. Map 먼저 가장 기본이 되는 map 입니다. map의 정의는 다음과 같습니다. 배열 내부의 값을 하나씩 mapping 해 각 요소에 대한 값을 변경한 새로운 배열을 원할 때 사용합니다. 각 요소의 값을 변경한 뒤 배열로 다시 리턴해줍니다. [Int] 안의 모든 원소의 제곱한 배열을 원한다면? let a = [1, 2, 3, 4, 5] let squared = a.map { $0 * 2 } print(squared) // [2, 4, 6, 8, 10] flatMap 그리고 compactMap flatMap 도 compactMap도 둘다 맵은 맵이니 하는 일은 비슷합니다만 어떤 차이가 있을까요? 먼저 이 녀석들도 정의부터 살펴보고 가겠습니다. c..
-
CAGradient location 정복하기iOS 2019. 12. 17. 16:43
오늘은 그라데이션 효과를 좀 더 잘 컨트롤 해보는 시간을 갖도록 하겠습니다. Gradient 의 locations 프로퍼티를 조작하면 쉽게 할 수 있습니다. 그 전에 아직 그라데이션 자체에 익숙치 않으시다면! 다음 글을 먼저 보고 와주시면 이해가 편하실거에요! locations 먼저 애플의 정의부터 확인해볼까요? 음.. 각 gradient의 종료 지점(?)을 정의해주는 녀석이라고 하네요. 0 ~ 1사이의 값을 사용해야 하구요... 종료 지점이라.. 종료 지점이 뭘까... 네 뭐 그래요.. 이것만으로 이해가 되면 포스팅하고 있지 않겠죠!! 지금부터 같이 알아봐요 :D 다시 제 언어로 정리해보면, (0.0 ~ 1.0)까지의 값으로 그라데이션 될 색의 경계(gradient stop)를 정해줍니다. 저는 gra..
-
Floating button 만들기 in ScrollViewiOS 2019. 12. 10. 11:00
화면 Scroll에 상관없이 계속해서 떠있는, 흔히 말하는 floatring 버튼을 만드는 방법을 알아봅시다. 화면에 항상 떠있는 floating button을 만들고 싶다면, autoLayout을 잡을 때 scrollView의 frameLayoutGuide 를 이용하면 됩니다. 항상 화면에 보이는 프레임의 layout을 따르겠다는 의미입니다. 이와 반대 개념으로 스크롤이 되어야 하는 뷰는 contentLayoutGuide 를 이용합니다. 스크롤 뷰 안의 내용 content의 layout을 따르겠다는 의미입니다. 즉, 스크롤이 되어지는 부분이 되겠죠? scrollView 바로 밑에는 scrollView와 크기가 같은 contentView 가 contentLayoutGuide에 맞춰서 추가되고 그 밑에 v..
-
ios13 status bar 높이 구하기 in Swift 5iOS 2019. 12. 10. 10:15
기존에는 status bar의 높이를 UIApplication.shared.statusBarFrame.height 를 사용해 구할 수 있었지만, 이 방법은 ios13 부터는 deprecated 되어 'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead. 이라는 문구를 띄워줍니다. 이제 window scene의 statusBarManager를 사용하라는 말인데, 다음과 같이 사용할 수 있습니다. let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 Optional은 상황에 맞..