iOS
-
[iOS] Custom View 만들기 (with .xib)iOS/iOS 2020. 11. 13. 11:12
안녕하세요 :) 오늘은 Custom View를 만드는 방법에 대해 알아보겠습니다! Custom View를 만드는 방법에는 크게 두 가지가 있는데요. Xib로 View 만들기 코드로 View 만들기 오늘은 Xib로 Custom View를 만들어보겠습니다! Xib로 Custom View 만들기 프로젝트를 하나 만들어주시고 Xib 파일을 만들기 위한 View를 선택해서 파일을 만들어줄게요! 그다음엔 Xib와 연결할 Swift 파일을 생성합니다. 이렇게 만들어 놓은 Xib에 들어간 후에 위쪽 File's Owner에 방금 만든 CustomView.swift 파일을 연결해주겠습니다. 그 후에 열심히 커스텀 뷰를 만듭니다! 뚝딱뚝딱~ 저는 이런 식으로 만들고 View Controller에서 Show 버튼을 누르면 ..
-
[iOS] Frame과 BoundsiOS/iOS 2020. 11. 6. 15:47
안녕하세요 :) 오늘은 Frame과 Bounds에 대해서 알아보겠습니다! Frame 우선 개발자 문서를 한번 참고해볼게요. 쭉 읽어보니까 우선 사각형으로 frame이 그려진다는 것을 알 수 있습니다. 그리고 무조건 superview(상위 뷰) 좌표계 안에서 뷰가 그려집니다. frame의 핵심은 상위 뷰의 좌표계를 기준으로 뷰가 그려진다는 것입니다. Bounds bounds의 공식 개발자 문서는 위와 같습니다. 사각형으로 그려지는 것은 frame과 동일합니다. 하지만 여기서 중요하게 봐야 할 부분은 바로 자기 자신의 좌표계에서 뷰가 그려진다는 것입니다. 여기서 가장 중요한 것은, 스크롤 뷰가 아닌 bounds는 항상 origin이 (0,0)라는 것입니다. bounds는 자신만의 좌표계에서 그려지는 것이기 ..
-
[iOS] SceneDelegate는 무엇일까?iOS/iOS 2020. 11. 6. 13:33
안녕하세요 :) 오늘은 SceneDelegate에 대해서 알아보겠습니다. SceneDelegate iOS 13 이전에는 SceneDelegate가 존재하지 않았습니다. 모든 라이프사이클에 관련한 것이 AppDelegate를 통해 작동했습니다. 하지만 iOS 13 이후 SceneDelegate가 등장하면서 AppDelegate는 Process Lifecycle과 Session Lifecycle을 담당하고, SceneDelegate는 UI와 관련된 Lifecycle을 담당하는 것으로 변경되었습니다. iOS 12까지는 대부분 하나의 앱에 하나의 window였지만 iOS 13부터는 window의 개념이 scene으로 대체되고, 하나의 앱이 여러 개의 scene을 가질 수 있게 되었습니다. Scene Scene에..
-
[iOS] 앱의 상태 변화에 따른 AppDelegateiOS/iOS 2020. 11. 6. 11:15
안녕하세요 :) 오늘은 앱의 상태가 변화되면서 AppDelegate에서 어떤 메서드들이 실행되는지 알아보도록 하겠습니다. iOS의 상태 앱의 상태 변화라는 것은 화면에 나타났거나, 화면 뒤로 숨겨졌거나, 시작되었거나 종료되었거나 등을 의미합니다. iOS에서 앱이 가질 수 있는 상태는 아래와 같습니다. Not Running : 앱이 시작되지 않았거나 실행되었지만 시스템에 의해 종료된 상태 Inactive : 앱이 전면에서 실행 중이지만, 아무런 이벤트를 받지 않고 있는 상태 Active : 앱이 전면에서 실행 중이며, 이벤트를 받고 있는 상태 Background : 앱이 백그라운드에 있지만 여전히 코드가 실행되고 있는 상태 대부분의 앱은 Suspended 상태로 이행하는 도중에 일시적으로 이 상태에 진입하..
-
[iOS] "공유하기" 기능 (Share Extension)iOS/iOS 2020. 10. 30. 17:21
안녕하세요 :) 오늘은 아이폰에서 공유하기 버튼을 누르면 나오는 공유하기 기능에 대해 알아보겠습니다. 새로 시작하게 될 프로젝트에서 공유하기 기능이 필요해서 잠깐 공부해봤어요! 시작하기 자 먼저 프로젝트를 하나 생성해주세요. 그리고 File-New-Target에 들어가 줍니다. 그 후에 Share Extension을 추가해줍니다. 스키마 이름도 지정해주시고, Activate 해주세요! 그 후에 프로젝트 상단의 스키마를 방금 추가해준 익스텐션으로 바꿔주시고 빌드해보겠습니다. 빌드를 하면 이런 창이 뜨는데, 어떤 앱에서 스키마를 시작할 것인가! 어떤 앱으로 시작할 것인가!입니다. 즉, 현재 Safari로 선택되어있으니까 Safari 앱이 먼저 켜지면서 우리는 공유 버튼을 눌러볼 수 있을 겁니다. 빌드한 후에..
-
[SwiftUI] 간단하게 Widget 알아보기iOS/SwiftUI 2020. 10. 16. 14:21
안녕하세요 :) 오늘은 iOS가 14로 업데이트가 된 후 주목받게 된 Widget에 대해 알아볼게요. (iOS 14+에서만 사용할 수 있으며, SwiftUI로만 작성이 가능합니다.) 간단한 예제를 만들면서 알아보도록 하겠습니다. 프로젝트 설정 우선 프로젝트를 만들어봤습니다. 그 후에 위의 과정으로 들어가서 Widget Extension을 추가해줄게요. Next 버튼을 누르면 이름을 설정하라고 나오는데 저는 WidgetEx로 설정했습니다. scheme도 activate 눌러주세요! Widget Extension도 적용해 주었으니 프로젝트를 빌드해서 살펴보도록 할게요. 빌드해서 Edit > + 버튼 > 내 앱 찾기 를 눌러주면 하단에 방금 만든 프로젝트가 뜨는 것을 볼 수 있습니다. 아무것도 설정하지 않았기..
-
[iOS] Unit Test에 대해 간단하게 알아보자iOS/iOS 2020. 9. 25. 16:15
안녕하세요 :) 오늘은 Unit Test에 대해 간단하게 알아보겠습니다. Unit Test란? 유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확하게 작동되는지 검증하는 절차입니다. 즉, 모든 함수와 메서드에 대한 테스트 케이스를 작성하는 절차를 말합니다. 유닛 테스트의 목적은 프로그램의 각 부분이 정확하게 동작하는지 확인하는 것입니다. 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 빠르게 확인할 수 있게 해 줍니다. 따라서 유닛 테스트를 하게 되면 프로그램의 안정성이 높아집니다. 위키백과에서 유닛 테스트를 위와 같이 말하고 있는데요. 저는 간단하게 "기능이 개발자의 의도에 맞게 동작하..
-
[iOS] UI 개발 시 Code Base로 개발하기iOS/iOS 2020. 9. 18. 16:18
안녕하세요 :) 오늘은 코드 기반으로 iOS UI를 개발해보려고 합니다! 취업을 준비하고 여기 저기 정보를 얻다보면 현업에서는 Storyboard를 거의 사용하지 않고 오직 Code로만 UI를 구현한다고 합니다. 왜 UI를 더 보기 쉬운 Storyboard 대신 Code로 작업하는것일까요? Storyboard의 장단점 장점 결과물에 관해 예측하기 쉽다. Inspector 창에서 속성을 확인, 설정할 수 있다. 소스코드를 하나하나 기억하지 않아도 된다. 단점 Storyboard 파일이 굉장히 무겁다. IBOutlet, IBAction 등의 연결이 끊어졌을 때 알기 힘들다. Storyboard를 소스코드로 봤을 때, 코드 리뷰가 어렵다. Conflict가 무조건 발생한다. Code Base의 장단점 장점 파..