전체 글

    CollectionView 사용해보기

    목차 - CollectionView가 뭐야 - CollectionView를 만들려면 뭘 해야해? - 간단하게 만들어보자 CollectionView가 뭐야 TableView 처럼 화면에 보여 줄 항목 수를 지정하고 데이터를 나열해서 보여주는 View이다. TableView 보다 자유롭게 배치가 가능하다. Supplementary view: Header, Footer가 될 수 있는 View다. Cell: CollectionView에서 반복적으로 표현하는 View다. CollectionView를 만들려면 뭘 해야해? 1) 재사용되는 Cell을 만들자. 2) Cell에 들어가는 데이터를 구성하자. 3) CollectionView에 Data를 연결해주자. 4) CollectionView에서는 CollectionV..

    ios - 코드로 constraint 적용해보기

    iOS에서 Storyboard를 사용하다보면 사진처럼 Constraints를 추가 할 수 있다. 그냥 iOS가 정확한 위치에 그릴 수 있게 설정하면 된다. x,y를 알 수 있게 왼쪽부터 00정도 떨어지게, 위쪽부터 00정도 떨어지게 설정해주세요~. 전체 width, height는 ~~입니다. 이 두가지만 알려주면 된다. 그래야 어느 위치에 보여 주어야하는지 알 수 있다. code로 보면 contraint를 view.**Anchor 로 지정해주면된다. contarint 적용하는 view.제약조건은.equalTo 부분부터. constant정도 떨어져있다. 라고 이해하면 된다. topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant..

    view 코드로 작성하기(ios programmatic ui)

    App을 생성하면 자동적으로 AppDelegate,SceneDelegate.swift 파일이 생성된다. SceneDelegate.swift 파일에 아래 코드를 추가하면 StoryBoard말고 코드로 뷰를 시작 할 수 있다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let scene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: scene) // 처음 시작하고자 하는 ViewController window?.rootViewContr..

    1. 가위바위보 만들어보기 (view 클릭 이벤트 넣기)

    처음 iOS를 배울 때 Storyboard를 사용하여 View를 구성 하였는데 너무 불편했다. 새로운 화면을 만들 때 마다 마우스로 클릭, 클릭, 드래그 이런 작업이 너무 지쳤고 UI가 변경되거나 수정되었을 때도 View를 만드는게 너무 귀찮아서 코드로 UI를 짜보기로 했다. 기본적인 개념을 알기위해 여러가지를 만들건데 클릭 이벤트를 알아보기 위해 가위바위보 앱을 만들어보자. 기능: - 화면 터치 시 랜덤으로 가위바위보 중 한개를 보여줌. 구현: 우선 가위바위보에 사용 될 이미지와 label를 코드로 생성해주자. // MARK: Properties /// 가위바위보가 표현될 이미지 /// 기본 값은 Empty로 설정 private var handImageView: UIImageView = { let iv..

    iOS 동시성 (GCD Grand Central Dispatch) 기본 개념

    목차 - 왜 공부하게 되었는가( 쓰레드 충돌, 테이블뷰 스크롤 뷰 이동 ) - 동시성이 왜 필요한가 - ios에서 동시성 관리하는 방법 - 동기, 비동기 개념 - 직렬큐, 동시큐 - DispatchQuque 나머지 왜 동시성을 공부하게 되었는가? 1) 앱 개발을 하던 중에 realm이 쓰레드 충돌을 일으켜서 - realm을 싱글톤으로 사용하고 있었고 .NSCalendarDayChanged 에서 충돌이 일어남. 2) tableView 스크롤이 dispatchQueue로 묶어줘야 동작하는데 그 이유를 알기 위해 // 왜 DispatchQueue로 감싸주어야 하지? DispatchQueue.main.async() { let indexPath:IndexPath = IndexPath(row: 11, section..

    Swift 메모리 관리 ARC(Automatic Reference Counting)

    C 나 C++ 에서는 OS 레벨의 메모리에 직접 접근하기 때문에 할당해준 메모리를 직접 해제해주었다. 그렇지 않으면 memory leak 문제가 발생 할 수 있는데 iOS에선 ARC 말그대로 참조 횟수를 카운트해서 메모리에서 해제해준다. 객체를 참조하는 수(Reference Count)가 0가 되면 메모리에서 해제해주는 방식이다. 자바에선 Garbage Collection으로 처리를 하는데, 프로세스가 메모리를 순환하면서 더 이상 사용 되지 않는다면 해제를 해주는 방법이다. 이런 방법은 언제 메모리에서 내려가는지 알 수가 없다는 특징이 있다. ARC는 참조하는 카운트가 0가 되면 내려가기 때문에 내려가는 시점이 명확하다. 근데, 메모리를 내가 신경 쓴다는 것 자체가 불편하긴 하다. 과거에는 메모리가 적기..

    Swift 기본 문법 - 16. 맵,필터,리듀서

    16. 맵, 필터, 리듀서 고차함수라 불리는 애들이다. 16.1 맵 맵은 collection의 값을 변경하기위해 주로 사용됩니다. 신기 했던 부분은 dictionary 컬렉션은 map으로 돌리면 내부는 튜플로 받아와지는점이 당황스러웠습니다. 반환 값은 배열로 반환해줍니다. let numbers: [Int] = [0, 1, 2, 3, 4] var doubleNumbers: [Int] = [Int]() doubleNumbers = numbers.map({ (number: Int) -> Int in return number * 2 }) doubleNumbers = numbers.map({ $0 * 2 }) print(doubleNumbers) let alphabetDictionary: [String: Stri..

    3. View의 생명주기 (LifeCycle)

    뷰의 생명주기 react-native도 그렇고 ios도 생명주기가 존재한다. 생명주기는 만들어지고, 자기 일을 하고 사라지는 과정을 말한다. 각 시기에 무엇을 해야할지 정리하면 이렇다. 뷰의 생명주기 만들어지고 자기 일을 하고 사라지는 과정 viewDidLoad UI를 업데이트를 함 bound, frame같은 기하학(geometry)은 viewDidLoad에서 할 수 없음 viewWillAppear 화면이 나옴을 알 수 있음 시각적으로 처리해야할 일을 하면됨 멀티쓰레딩으로 ui가 집어넣어짐 - 네트워크가 느리다고 버튼이 클릭되면 안되지 않슴 로딩화면을 보여줄수도 있음 여기에도 geometry는 넣지 않음 viewDidAppear 애니메이션을 처리하기 좋은 곳임 viewWillDisappear 여기서 애니..