[IOS] - 기초 공부
·
개발일기/IOS
IOS란 애플사가 만든 모바일 운영체제로 아이폰, 아이패드에 사용되는 운영체제이다. IOS 개발언어 스위프트 객체지향 언어로 애플에서 개발한 현대적인 범용 프로그래밍 언어를 의미 장점 코드를 간결하게 구현할 수 있다. 객체 지향 개념을 사용하여 유연하게 개발이 가능하다 멀티 플랫폼 개발이 지원되고 개발시간이 짧다. 다양한 사용자 인터페이스 기능을 제공한다 단점 상대적으로 오브젝티브-C보다 속도가 느리다. 오브젝티브 - C 객체지향언어로 스위프트가 출시되기 전에 IOS개발에 주로 사용되는 프로그래밍 언어 장점 스위프트보다 더 빠르다 상대적으로 더 안정적이다 더 많은 엔진이 구현되어 있다 엔터프라이즈 레벨 앱 개발이 가능하다 단점 간단한 작업을 수행하기 위해서는 많은 코드가 필요하다 러닝커브가 높다 디버깅을..
[Swift] - Notification 정리
·
개발일기/IOS
Notification장점많은 줄의 코드가 필요없어 쉽게 구현가능다수의 객체들에게 동시에 이벤트의 발생을 알려줄 수 있다.Notification과 관련된 정보를 Any? 타입의 object, [AnyHashable:Any]? 타입의 userInfo로 전달할 수 있다.NotificationCenter를 통해 정보를 저장하기 위한 구조체는 name, object, userInfo로 구성되어있다. 옵저버에게 전달되는 구조체로 정보가 담겨있고, 해당 알림을 등록한 옵저버에게만 전달된다.var name: Notification.Namevar object: Any?userInfo: [AnyHashable: Any]?name: 전달하고자하는 notification의 이름으로 이걸 통해 알림을 식별한다.object: ..
[Swift] - UIGestureRecognizer
·
개발일기/IOS
제스처 인식기Gesture Recognizer는 일련의 터치를 인식하고, 인식에 따라 동작하는 로직을 분리시킨다.즉, 제스처를 인식하거나 제스처의 변경을 인식하면 연결된 target에 actoin메세지를 보낸다.UIGestureRecognizer 클래스는 이런 Gesture Recognizer가 구성되어야하는 공통의 동작세트를 정의하고 있다.View에 UIGestureRecognizer가 있다면 Window는 터치이벤트를 View에 전달하기 전에 UIGestureRecognizer객체에 먼저 전달하게 된다.UIGestureRecognizer가 전달받은 터치 이벤트에서 특청 제스처로 인식한다면 UIGestureRecognizer가 이벤트를 처리하고 View로 전달된 터치이벤트를 취소하고, 나머지 터치이벤트..
[Swift] - View의 Cycle
·
개발일기/IOS
loadView : LoadView is only called once: when the view needs to be loaded.viewDidLoad : Memory에 올림viewWillAppearviewWillLayoutSubviewsviewDidLayoutSubviewsviewDidAppear뷰가 화면에 그려지는 원리Layout(size와 Position)을 토대로 Drawing 정의뷰는 모두 사각형으로 그려지므로, 메서드 시그니처도 draw(rect:)로 정의된것.뷰는 Constraints 값을 이용하여 Layout(size와 Position)을 결정let constraints1 = [ self.myView.heightAnchor.constraint(equalToConstant: 300), ..
[Swift] - Animation 정리 2
·
개발일기/IOS
💡 TableView, CollectionView는 ScrollView를 상속받고 있다.contentOffsetvar contentOffset: CGPoint { get set }scroll view의 origin에서 content view의 origin까지 얼마나 떨어졌는지를 나타내는 좌측상단의 포인트. scrollView Bounds의 origin point값콘텐트 뷰의 원점이 스크롤뷰의 원점과 상쇄되는 지점으로 스크롤할 때마다 contentoffset이 변한다.contentOffset이 변하면 스크롤된다.기본값은 CGPointZero(0,0)이다. 💡 CGPointCGPoint는 2차원 좌표계를 표현하는 점으로 x,y값(double형식)을 갖고 있음CGSize너비 및 높이값을 포함하는 구조체wi..
[Swift] - Animation 정리 1
·
개발일기/IOS
Animation은 우선 Closure기반으로 작성한다.Animate가 실행되는 동안에는 user Information(터치 등)이 일시적으로 disabled되었다가, 끝나면 다시 enable된다.UIView.animate를 사용한 애니메이팅은 자동으로 MainQueue(UI Queue)에서 동작한다.따라서 DispatchQueue.main.async를 사용하지 않아도 된다.origin 값을 변경하는게 아니라 Transform을 변경하는 것이다.Transform.identify를 이용하여 원래값을 얻을 수 있다.애니메이팅이 끝난 후, 동작하는 completionHandler가 존재한다.Animation이 중간에 cancel되는 경우가 있어서 파라미터로 Bool변수를 받는다.애니메이션이 가능한 속성이 정해..
[Swift] - CollectionView 정리
·
개발일기/IOS
collectionView의 레이아웃FlowLayoutGird형태의 레이아웃을 쉽게 구성할 수 있도록 도와주는 클래스, UICollectionViewDelegateFlowLayout 대리자를 통해서도 지정가능let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical // 스크롤의 방향(기본값 vertical)layout.minimumLineSpacing = 20 // 그리드 줄 간격(기본값 10)layout.minimumInteritemSpacing = 20 // 그리드 행 간격(기본값 10)layout.itemSize = CGSize(width:100, height:100) // 각 cell의 크기 설정, 기본 크기..
[Swift] - ViewController 화면전환
·
개발일기/IOS
presentedViewController, presentingViewController의 차이에 대해 보도록 하자.핵심만 먼저 말하면 presentedViewController는 지금 ViewController가 띄우는ViewController,presentingViewController는 지금 ViewController를 띄우는 ViewController다.즉 ViewController A, B, C가 있다고 하고 A가 present로 B를 띄우고, B에서 present로 C를 띄운다고 하면B의 presentedViewController는 C, presentingViewController는 A가 된다.이제 가장 큰 차이를 알았으니 개념에 대해 좀 더 자세히 보도록 하겠다. presentedViewCo..
[Swift] - ViewController 생명주기
·
개발일기/IOS
loadView()View를 로드한다 =⇒ View를 메모리에 올리는 함수뷰 컨트롤러는 메모리에 올라온 후, 인스턴스 메서드인 loadView()를 통해 View(화면)을 메모리에 올린다.뷰 컨트롤러의 IUO 저장 프로퍼티로 선언되어 있는 View의 요청으로 이 메서드가 호출되면 View를 로드하거나 생성하여 해당 저장 프로퍼티에 할당한다.뷰 컨트롤러와 연결된 스토리보드(nib)가 있다면 해당 스토리보드에서 View를 로드하며, 스토리보드를 통해 View를 생성 및 초기화하는 경우 loadView() 메서드를 재정의해서는 안된다.만약 View를 코드로 생성했다면 loadView()를 재정의해서 Viewcontroller의 View에 직접 생성한 View를 할당하면 된다.(super.loadView() 불..
[Swift] - IOS 앱 생명주기
·
개발일기/IOS
생명주기: 앱이 실행되는 동안 다양한 상태를 거치며 변화하는 것을 의미한다. 앱의 현재 상태에 따라 언제든지 앱이 수행할 수 있는 작업과 수행할 수 없는 작업을 결정하기에 이는 중요하다.예를 들면 foreground app은 유저의 주목을 받기에 실행되는 기능들이 우선적으로 수행될 것이고, 반대로 background app은 최소한의 작업만을 수행할 것이다.(유저에게 보이지 않기때문에)그렇기에 앱의 상태 변화에 따라서 적절한 동작을 수행할 수 있도록 조정하는 것이 사용자에게 더 나은 앱 환경을 제공할 것 같다.IOS 13이전 app-based life cycle eventsIOS 13이전에는 앱 기반 생명주기로 구성되어 있었다. UIKit에서는 UIApplicationDelegate가 모든 생명주기 ev..