분류 전체보기

    [GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점

    [GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점

    제스처를 사용하는 방법은 간단합니다. 자! 저는 지금부터 infoView라는 제가 만든 View에 왼쪽으로 Swipe했을 때 어떤 동작이 실행되도록 해보겠습니다!! 먼저 우리는 제스처 인식기를 만들어주어야 합니다. let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(infoviewSwipeLeft)) 여기서 만든 제스처 인식기는 제스처가 인식되면 infoviewSwipeLeft 라는 @objc 함수를 실행합니다!!! 이 함수의 내용은 우리가 구현하기 나름이겠죠?? 자 그럼 어떤 제스처이냐?? 우리는 UISwipeGestureRecognizer라는 제스처 인식기를 만들었죠? 그러면 이 제스처 인식기의 방향을 다음과 같이 설정해줄..

    [UICollectionView] View를 하나씩 넘기기, 여러개씩 넘기기

    [UICollectionView] View를 하나씩 넘기기, 여러개씩 넘기기

    우리가 보는 많은 앱들에는 CollectionView가 생각보다 핵심적인 기능으로 들어가는 경우가 많습니다. Netfilx 앱에서 옆으로 밀어서 영화를 탐색할 때, coupang에서 찜한 목록 등을 볼 때 등 컬렉션 뷰는 테이블 뷰가 하는 일을 모두 할 수 있으면서도 레이아웃까지 가지고 있어서 수직 스크롤 뿐만 아니라 수평 스크롤도 가능합니다. 하지만 아래 앱처럼, 하나씩 넘기는 건 어떻게 구현할 수 있을까요?? 하나씩 넘기고, 현재 내가 보고 있는 collectionView의 index가 어떤 인덱스인지까지 확인하는 방법은 무엇일까요? 일단 주우우우욱 스크롤이 되는 collectionView는 만들 수 있을 겁니다. tableView를 만들 수 있다면, 분명히 쉽게 가능할 것입니다. 하지만 지금 내가 ..

    [CoreData] Coredata 자체를 sort 할 수 있을까?

    [CoreData] Coredata 자체를 sort 할 수 있을까?

    내부적으로 어떻게 저장되는지에 대해서 작성하자. 그리고 항상 빼내고 나서 sort 해서 사용하는지? 데이터 자체를 sort 된 채로 가지고 있을 수는 없는지? 누군가는 linked list를 제안함. https://stackoverflow.com/questions/2744997/default-sorting-with-core-data Default Sorting with Core Data This could well be a real stupid question, but I can't seem to sort my Core Data fetched results in the order they were saved to the persistent store. Effectively, I don't want to ..

    [Swift] appDelegate 참조 안전하게 하기

    [Swift] appDelegate 참조 안전하게 하기

    우리는 종종 App delegate에서 선언된 instance들을 사용해야 할 때가 있다. 보통은 다음과 같이 강제추출을 사용하게 된다. UIApplication.shared.delegate as! AppDelegate 하지만, 우리의 두뇌에서 괜찮다고 외쳐도 강제추출을 쓰는 것은 좋지 않다. (사바사 상바상 이라고는 하지만, 멘토님께 쓰지 않는 습관을 들이는게 좋다고 배웠다.) 설명은 다음의 persistentContainer를 가져오는 예시를 통해서 하겠다. App Delegate 에는 persistentContainer가 다음과 같이 선언되어 있을 것이다. import UIKit import CoreData @main class AppDelegate: UIResponder, UIApplication..

    [UIImageView] image 색 변경하기

    [UIImageView] image 색 변경하기

    우리가 이런 system Image의 색을 자유롭게 변경할 수 있듯이, 우리가 직접 넣은 이미지도 색을 변경할 수 있다. 방법은 다음과 같다. 1. 먼저 Image를 template Image 상태로 rendering해준다. template 상태에서 tint color을 수정해줄 수 있다. testImageView.image = UIImage(named: "TEST_IMAGE")?.withRenderingMode(.alwaysTemplate) 2. 이제 image의 tint color을 자유롭게 수정할 수 있다. testImageView.tintColor = .blue image의 색을 변경하는 아주 간단한 코드를 만들어보았다. import UIKit class ViewController: UIViewC..

    [Swift UI] @State에 대한 아주 얕은 고찰

    [Swift UI] @State에 대한 아주 얕은 고찰

    @State는 구조체 내부의 값을 변경할 수 있도록 해주는 역할을 합니다. 기본적으로 우리는 struct가 한번 생성되면, 내부에서 값을 바로 변경할 수는 없었죠? C++과 같은 여러 객제지향 언어에서 구조체 안의 변수값을 변경해주 역할을 하는 함수를 mutating 키워드로 선언했던 기억을 떠올리면 쉬울 거에요! 근데 왜 mutating이 있는데, 굳이 변수 앞에 @State를 쓸까요? 답은 재참조에 있습니다!! mutating func으로 변경된 변수는 View가 destroy 되는 순간, 다시 초기값으로 돌아가게 됩니다ㅎㅎ 하지만 @State 변수의 경우 view가 destroy 된 이후에도 해당 값을 재참조한다는 차이점이 있습니다. 조금더 자세히 설명하자면 @State 키워드 변수는 실제로 값이 ..

    [SwiftUI] Swift UI에 대한 첫인상

    [SwiftUI] Swift UI에 대한 첫인상

    처음에 swiftUI를 접했을 때는 기존 UIKit에서 사용했던 viewcontroller가 없어서 처음에 정말 당황습니다. 아직 매우 기초적이지만ㅋㅋ 공부를 하면서 느낀 swift UI의 가장 큰 특징! 은 저장된 변수가 거의 없다는 것입니다. 그때 그때 원하는 매개변수를 struct에 넘겨 주어서 view를 구성한다는 것이 storyBoard와 가장 큰 차이인 것 같습니다. 즉, 기존에는 컨트롤러가 중앙에서 함수들을 관리하면서 변수들을 저장하고, 넘겨주고 이런 역할을 해주는데, swiftUI에서는 struct 하나가 view 하나의 레이아웃 구성과 함수들을 관리하기 때문에, view들이 독립적이라는 생각이 들었습니다. 이렇게 되면 데이터를 구조화하는게 매우 중요하고, sturct 구성을 깔끔하게 하는..

    [Watch OS] CFBundleVersion이 Info.plist에서 매칭하지 않는 오류 해결법

    [Watch OS] CFBundleVersion이 Info.plist에서 매칭하지 않는 오류 해결법

    The value of CFBundleVersion in your WatchKit app's Info.plist (1) does not match the value in your companion app's Info.plist (6). These values are required to match. 처음 생성하고 Watch App을 빌드하는데, 다음과 같은 오류가 발생했다. simulator에서는 잘 돌아가는데, 내 apple watch로 빌드를 하려고 하면 나타나는 문제여서 난감했다. 오류 문구를 읽어보니 WatchKit app info.plist의 CFBundleVersion이 짝이되는 iOS app의 info.plist와 일치하지 않기 때문이라고 한다. StackOverFlow에 검색해보니 여러가지..

    [Watch OS] 기존 iOS 프로젝트에 Watch App 추가 방법

    [Watch OS] 기존 iOS 프로젝트에 Watch App 추가 방법

    [참고] 애플개발자문서 - setting up a watchos project 기존에 iOS 단일 OS로 제작하던 앱에서, watch OS를 추가해야 해서 방법을 찾아보니 매우 간단했다. 간단하게 순서대로 설명해보겠다. 1. 프로젝트 메뉴에서 New -> Target 을 클릭한다. 2. Watch App for iOS App 을 선택한다. -> Next 3. watch 앱에 대한 설정을 진행한다. (나는 기존의 앱 이름 뒤에 Watch를 추가해주었다.) 4. 그러면 이렇게 scheme을 활성화 할거냐고 묻는데, 공식문서에서는 Activate 하라고 나와있다. 또한 우리가 Watch app을 추가하게 되면, notification schene이 default 값으로 포함되어 있는데 당장 사용하지 않더라도 ..