목록전체보기 (53)
만재송
비동기 같이 처리할 코드를 코루틴을 사용하면 편리하게 구현할 수 있습니다. 사용방법도 간단합니다. StartCoroutine("코루틴명칭") // string 또는 IEnumerator 메서드 중단하는방법도 간단합니다. StopCoroutine("코루틴명칭") 하지만! Start 가 잘된다고 해서 Stop 도 그냥 함수명 써서 실행했는데 잘 안됩니다. 이유는 IEnumerator 메서드를 실행할때마다 참조값이 바뀌기 때문입니다. 보통 StartCoroutine 을 실행할때 아래와 같이 실행합니다. StartCoroutine(TestCoroutine()) TestCoroutine 메서드를 실행한 반환값을 StartCoroutine 메서드에 전달합니다. 즉, TestCoroutine 실행할때마다 참조값이 바..
이전에는 하나의 사이즈였던 아이폰 기종이 이제는 iPhone4, iPhoneSE, iPhone8, iPhone8 Plus 그리고 iPhoneX등 다양한 사이즈와 화면 비율로 출시 되면서, 사이즈에 구애받지 않고 시각적으로 동일한 화면을 구현해야하는데 이를 위한 가장 편리하고 권장되는 방법이 바로 오토레이아웃입니다. 오토레이아웃은 뷰의 제약 사항을 바탕으로 뷰 체계 내의 모든 뷰의 크기와 위치를 동적으로 계산합니다. 오토레이아웃은 애플리케이션을 사용할 때 발생하는 외부 변경과 내부 변경에 동적으로 반응하는 사용자 인터페이스를 가능하게 합니다. 스토리보드를 이용해서 간단하게 사용해보겠습니다. 스토리보드의 뷰컨트롤러에서 적당하게 라벨과 버튼을 배치하고 실행을 해보겠습니다. 이 상태에서 시뮬레이터를 가로모드로 ..
세그는 스토리보드에서 뷰 컨트롤러 사이의 화면전환을 위해 사용하는 객체입니다. 모달이나 네비게이션에도 세그를 하고 있었구요. 컨트롤러 사이를 연결하면 화살표가 생기는데 그게바로 세그입니다. 그럼 세그를 이용해서 뷰컨트롤러 간의 화면전환을 해보겠습니다. 뷰컨트롤러 2개를 생성하고 버튼2개를 만들어보겠습니다. 그다음 왼쪽 뷰컨트롤러를 control 키를 누른채 오른쪽 뷰컨트롤러에 드래그해서 show 를 클릭해줍니다. 그럼 중간에 세그 화살표가 뜨는데 그걸눌러서 인스펙터창에서 Identifier 값을 적당하게 넣어줍니다. 다음 코드를 작성하겠습니다. ViewController 에 IBAction 메서드를 만들고 아래와 같이 값을 추가해줍니다. -(IBAction)onTouchedNextButton:(id)se..
모달은 사용자의 이목을 끌기 위해 사용하는 화면전환 기법입니다. 네비게이션 인테페이스와는 달리 정보의 흐름을 가지고 화면을 이동한다기 보다는 꼭 이목을 끌어야하는 화면에서 사용합니다. 그래서 모달로 보이는 화면은 되도록 단순하고 사용자가 빠르게 처리할 수 있는 내용을 표현하는 것이 좋습니다. 간혹 도움말이나 회원가입 창 같은 정도로 쓰면 괜찮을 것 같습니다. 모달을 구현하기 위해 먼저 뷰 컨트롤러 2개를 생성하겠습니다. 다음뷰로 넘어가기위해 2개의 버튼을 만들고 첫번째 버튼을 오른쪽 뷰 컨트롤러에 드래그하면 검은 창이 뜨는데 Present Modally 를 클릭해줍니다. 다음은 뒤로가기 버튼을 구현해보겠습니다. 뒤로가기는 코드로 구현해줘야하는데 먼저 오른쪽 뷰컨트롤러의 클래스를 만들어줍니다. New Fi..
네비게이션 컨트롤러는 뷰 컨트롤러 사이를 계층구조로 탐색할 수 있게 해주는 컨트롤러입니다. 뷰 컨트롤러들이 스택형식으로 쌓여있어 화면이 전환될 때 마다 기존의 뷰 컨트롤러를 지우는게 아니라 원래 있던 화면위에 새화면이 올라가게 되는 형식입니다. 아래는 네비게이션 인터페이스 방식입니다. 그럼 네비게이션을 이용하여 화면을 전환해 보겠습니다. 스토리보드로 가서 뷰 컨트롤러를 1개더 생성합니다. 이상태에서 네비게이션 컨트롤러를 생성합니다. 생성방법은 object library 를 이용해도되고 Editor -> Embed in -> Navigation Controller 를 클릭해도 가능합니다. 반은 완성됬습니다! 이제 다음 뷰 컨트롤러로 넘어갈 버튼만 생성해보겠습니다. 중간에 있는 뷰컨트롤러에 버튼을 하나 생성..
프로토콜(protocol)은 선언만 되고 구현되지 않은 메서드를 말합니다. 다른 언어의 인터페이스와 같이 기능을 정의하고 구현하는 쪽은 프로토콜에서 정의한 메서드를 구현하면 됩니다. 프로토콜의 정의는 다음과 같습니다. @protocol 프로토콜명 @required or @optional - 메서드정의 @end required 는 반드시 구현해야할 메서드를 정의하는곳이고 optional 은 구현해도되고 안해도되는 메서드를 정의하는 곳입니다. 보통 프로토콜을 자주쓰이는 방식이 델리게이트 패턴방식입니다. 델리게이트의 뜻은 대표, 위임하다 등 이있는데요. 여기서의 델리게이트는 대리자 라는 뜻으로 이해하시면 됩니다. 쉽게말해서 하나의 객체가 모든 일을 처리하는 것이 아니라 처리해야 할 일 중 일부를 다른 객체에 ..
Ios 에는 많은 UI 클래스들이 있습니다. 그중 가장 자주 사용하는 버튼과 라벨의 사용법에 대해 설명하겠습니다. 버튼은 터치나 탭등의 이벤트에 반응해 미리 지정된 코드를 실행하는 클래스입니다. 버튼에는 텍스트를 입력하거나 이미지를 추가하여 꾸밀수도있고 버튼의 상태에 따라 버튼의 이미지를 변경할 수도 있습니다. 버튼의 생성은 object library 탭에서 Button 을 클릭하면 생성이 가능합니다. 라벨은 한 줄 또는 여러 줄의 텍스트를 보여주는 뷰입니다. 생성은 버튼과 비슷한방법으로 Label 을 클릭하면 생성됩니다. 이를 통해 버튼을 클릭하면 라벨의 텍스트를 변경하는 코드를 작성해 보겠습니다. 먼저 버튼과 라벨을 뷰컨트롤러에 생성합니다. 다음은 ViewController 의 코드를 작성해야 합니다..
스토리보드는 UI를 디자인 하는 곳으로 프로젝트를 생성하면 기본적으로 Main.storyboard 와 LaunchScreen.storyboard 가 생성됩니다. 화면에 주로 나오는 스토리보드는 Main.storyboard 이며 Main 에 너무많은 뷰가 있을때 서브 스토리보드를 만들어 효과적으로 뷰를 관리할수도 있습니다. 그럼 새로운 스토리보드를 만들어 화면에 나오게 해보겠습니다. 먼저 스토리보드를 생성해줍니다. New File 을 선택하여 스토리보드 아이콘을 클릭합니다. 생성을 하면 초기에는 씬에 아무것도 없는상태가 됩니다. 기본적인 화면을 보여주기 위해 View Controller 를 생성해보겠습니다. 생성은 object library 버튼을 클릭하여 생성하는데 오른쪽 상단 동그란버튼을 클릭하거나 s..
뷰 컨트롤러는 하나의 화면을 구성하고 있고, 여러개의 뷰 컨트롤러가 모여 하나의 앱을 만듭니다. ios 는 한 화면에서 다른화면으로 전환할 때 기존의 화면위에 새로운 화면이 쌓이는 방식으로 화면을 전환합니다. 이 때 각각의 뷰 컨트롤러는 자신만의 생명주기를 가지고 있습니다. - (void)viewDidLoad { [super viewDidLoad]; // 해당 뷰컨트롤러 클래스가 생성될 때 실행됩니다. 최초 한번만 실행되기 때문에 초기화 할 때 사용 할 수 있습니다. } - (void)viewWillAppear:(BOOL)animated { // 뷰 컨트롤러가 화면에 나타나기 직전에 실행됩니다. } - (void)viewDidAppear:(BOOL)animated { // 뷰 컨트롤러가 화면에 나타나기 ..
앱 생명주기는 홈버튼을 눌렀을 때, 전화가 왔을때와 같이 앱이 화면상에서 보이지 않는 백그라운드 상태, 화면에 올라와 있는 상태 등과 같은 상태들을 정의한 것 입니다. ios 앱을 실행하면 UIApplicationMain 클래스를 실행하여 AppDelegate 객체를 생성합니다. AppDelegate 에는 앱 생명주기가 존재하며, 이벤트에 의한 메시지를 받았을 때, 해당 상황에서 실행 될 함수들을 정의하고 있습니다. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 앱이 처음 시작될 때 실행 return YES; } - (void)applicationW..