알짜배기 예제로 배우는 iOS 프로그래밍

2017-11-30 / 유용호 저


무슨 책인가.

 제목은 '알짜배기 예제로 배우는 iOS 프로그래밍' 책이다. 앱을 개발하고자 하는 시작 단계의 사람들을 위한 흐름 소개서다. 개발 내용을 가장 많이 다루고 있지만, 책의 전체 내용은 앱 출시과정을 위해 어떠한 일을 해야하는지 다룬다. 예제를 통해 앱 개발의 전반적인 내용을 다루며, 무엇을 학습하고, 무엇을 준비해야하는지 알려준다. iOS 앱의 출시만을 목표로 다른 것은 염두에 두지 않는다. 프로그래밍 기초적인 내용도 출시와 상관 없다면 뺐다. 차라리 출시과정을 한 번 간접체험하고 다른 책, 웹사이트, 강좌 등을 이용해 보다 구체적인 학습의 단계로 넘어가는 것이 좋다고 생각했다. 그래서 두께가 두꺼워지지 않도록 신경썼다. 두꺼우면 끝까지 보지 않으니까. 이 책에 나온 각 내용을 상세히 다룬다면 지금의 몇 배의 두께를 감당해야 할 것이고, 그것은 초심자를 위한 것이 아니라고 생각했다. 무쪼록 내가 앱을 만들어왔던 이 발자취가 누군가의 막연함을 덜어주는데 조금이나마 도움이 됐으면 한다.


누구를 위한 것인가.

 철저하게 초심자를 위한 책이다. 최대한 초심자를 위해 쓰려고 노력했다. 전문가가 보기엔 오히려 이상한 부분도 있을 것이다. 설명을 최대한 간략히 하려고 노력했기 때문이다. 사실 앱 제작을 위한 입문서가 할 일은 특정 부분을 상세히 알려주는 것보단, 전체적인 흐름을 체험하고, 무엇을 더 학습해야 하는지 알려주는 것에 있다고 나는 믿는다. 처음 앱을 개발해서 출시하고자 하면 막연하고 답답한 마음이 있다. 나역시 처음 너무도 막막했기에 그 기분을 잘 알고, 다른 누군가가 나와 똑같은 느낌을 느끼는게 싫었다. 초심자와 전문가는 사실 막막함의 차이가 가장 크다. 전문가도 특정 분야에 대해 무엇이든 다 알진 못한다. 다만 전문가들은 그들 스스로 길을 찾아갈 줄 알며, 무엇을 더 익혀야 하는지 알기 때문에, 방향을 고민하진 않는다. 전문가는 자신이 무엇이 부족한지 알고 있고, 그 부족함을 어떻게 채워야 하는지도 알고 있다. 자신이 알고 있는 길을 그냥 걸어가면 되는 것이다. 초심자는 다르다. 자신이 무엇을 모르는지 조차 모른다. 초심자 강의에서 모르는 것을 물어보라고 하면 대부분은 질문이 없다. 이는 초심자가 모르는게 없어서가 아니라, 무엇을 물어봐야하는지 조차 모르기 때문이다. 이 책이 초심자들 스스로 무엇을 모르는지 깨닫는데 조금이나마 도움이 되길 바란다.

무엇이 들어있는가.

 나의 입장에서 이 책은 누군가를 위한 학습서라기 보다는 나의 족적을 돌아볼 수 있는 일기장에 가까운 느낌이다. 이 책에 있는 내용들은 내가 실제 앱을 만들며 겪었던 과정을 그대로 담고 있다. 우선은 앱을 기획하기 위한 도구들을 설명한다. 이러한 도구들은 실제로 내가 앱을 제작하며 사용했던 도구들이다. 생각을 정리하고, 방향을 설정하고, 무엇보다 중요한 것은 어디까지만 구현할지 정하는 것이다. 이 책은 각 챕터별 설명을 위한 앱을 따로 제작하지 않았다. 내가 갖고싶은 앱을 만들고, 그 앱의 제작기를 제공하는 형태다. 그 과정에서 내가 도움을 받았던 도구들과 작성했던 코드들을 거의 그대로 넣었다. 쓰일지 말지 모르는 개념을 넣어서 책을 두껍게 만들기보다는 딱 내가 사용한 개념만을 넣으려고 노력했다. 앱 출시의 간접경험을 제공하고자 하는 목적이었기에 외주에 대한 소개도 넣었다. 모든 걸 혼자할 수는 없기 때문이다. 돈 많으면 다 해결되겠지만, 내가 돈이 없었으므로, 돈 많이 드는 프로그래밍 개발 부분이 주된 내용이다. 출시를 위해 준비해야하는 다른 주변 상황들과 앞으로 무엇을 더 학습해야 하는지도 넣었다.

어떻게 보아야 하는가.

 책에 소개된 내용을 한 번 보고나서, 자신만의 앱을 만든다. 글자도 넣어보고, 입력 칸도 넣어보며, 책이 안내한 모양과는 다른 자신만의 앱을 이리저리 만들길 추천한다. 심화단계의 앱은 앱스토어에 올려져 있다. 어차피 무료이니 다운로드 받아서 이것저것 눌러보면 좋다. 그 기능을 어떻게 코드로 타이핑했는지 알려고 하기 보다는, 이러한 형태가 있구나, 정도의 느낌만 알면된다. 추후 비슷한 기능이 필요할 때 그 부분을 찾아서 그대로 타이핑 치거나, 소스코드를 다운받아 참고해도 된다. 시간 상 하나하나 상세히 살펴보기 힘들다면, 소설책처럼 눈으로 쭈욱 읽어나가기만 해도 된다. 소스코드도 넓게보면 하나의 패턴이므로, 우선은 그러한 패턴에 익숙해지길 바란다. 소스코드 뿐만이 아닌 앱 기획, 디자인, 관리 웹사이트 등에 대한 정보를 어떤 방향으로 접근해야하는지의 시각으로 봐주길 바란다. 어떤 분야든 책 한, 두 권 보고 전문가 수준으로 올라가는 분야는 없다. 내가 이 책으로 이루고자 하는건 간단하다. 이 책을 보고 누군가가 이제 자신의 다음 책, 다음 강좌, 또는 다음 질문을 깨닫게 된다면, 나는 그것으로 만족하려 한다.


알라딘: 바로가기

예스24: 바로가기

교보문고: 바로가기

swift - 랜덤함수. 임의의 수 추출하기


이렇게 작성하시면 됩니다.

아래처럼 작성하면 0에서 9까지의 정수를 반환합니다.

//랜덤함수 사용하기
let randomNo: UInt32 = arc4random_uniform(10);


물론 arc4random 함수도 있고, 실수를 반환하는 방법도 있지만  자주 쓰지 않아서 일단 이걸로 웬만한건 다 해결합니다.


그러면 1 부터 10까지는 어떻게 하느냐?

//랜덤함수 사용하기
let randomNo: UInt32 = arc4random_uniform(10) + 1;

이러면 됩니다. 단순히 시작지점을 더해주신다고 생각하면 쉽습니다.


//랜덤함수 사용하기
let randomNo: UInt32 = arc4random_uniform(범위) + 시작지점;

10부터의 랜덤숫자를 원하시면 + 10을 해주면 되겠죠?

이상 eedler 개발팀입니다.

iOS - 위젯 왼쪽의 여백을 없애자.


Widget 관련 개발을 하게 되면 가장 먼저 찾아보게 되는 항목입니다.

기본적으로 위젯은 뷰를 추가해서 내용을 보여줄 경우 왼편에 마진이 존재합니다.


이렇게 말이죠.


하지만 사정에 따라 왼쪽의 여백을 넣고 싶지 않은 경우가 있는데요.

그럴 경우 위젯의 마진을 수정해주는 함수 하나만 선언 해주시면 됩니다.

해당 위젯 ViewController에

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    //return defaultMarginInsets        
    return UIEdgeInsetsZero
}

라고만 작성해 주시면 됩니다.

혹시 작업 중 원래의 여백을 적용하고 싶다면, 주석처리 되어 있는 return deaultMarginInsets 구분을 사용하시면 됩니다.


그러면 아래처럼 여백이 없어진 형태로 보이게 됩니다.


간단하죠?


여기까지 eedler 개발팀이었습니다.^^

iOS - 앱 상단 상태바를 없애자.


상태바가 뭔가 하면.

바로 이겁니다.

앱의 기획의도에 따라 상태바가 보이지 않는게 더 어울릴 때가 있는데요.

그럴 때 해당 상태바를 손쉽게 없애는 방법을 안내하겠습니다.


의외로 쉽게 없애는게 가능합니다

각 View 의 ViewController 클래스에 아래 소스만 추가해주면 됩니다.

override func prefersStatusBarHidden() -> Bool {
        return true
 }

return 을 true 인가 false 인가 라고 설정하면 반영됩니다.


하지만 모든 ViewController에 해당 함수를 넣는 것도 약간은 불편한데요.

쉽게 Xcode에서 설정할 수 있습니다.


1. info.plist 에 View controller-based status bar appearance 를 NO 로 추가한다.


2. 프로젝트 설정에서 Hide status bar 에 체크한다.


각 View 마다 함수를 override라는 방식보다는 전체를 없애야할 경우 편합니다.

물론 특정 View에서 상태바가 필요하다면 전체 hide 설정 후 해당 View에서만

위에 함수 prefersStatusBarHidden 에서 false 를 반환해주면 해당 뷰만 Status bar 가 보이게 됩니다.


아래는 Status Bar 제거를 설정한 화면입니다.


설정에서의 특징은 LaunchScreen 에서도 상태바가 제거된다는 겁니다.

LaunchScreen은 따로 클래스를 만들어주기 불편한데 해당 설정은 시작 화면에서도 제거를 해주니 편합니다.


설정과 함수를 통해서 전체를 없애고 필요한 곳에 표시하든.

전체는 있게하고 필요한 곳에서만 제거하든. 각자 필요대로 사용하시면 됩니다.


이상 eedler 개발팀이었습니다.^^

+ Recent posts