본문 바로가기

전체 글

(206)
[두깃] 스토리보드 삭제, 메인화면UI 스토리보드 삭제 스토리보드를 여태 안지우고 화면 클래스 이름과 맞춰서 사용하고 있었는데 .. 원래 스토리보드 안쓸라면 그냥 지우고 사용하면 되는 것이었다. 1. Main.storyboard 삭제 (Move to Trash) 2. info.plist Application Scene Manifest > SceneConfiguration > Application Session Role > Item 0 > Storyboard Name String Main -> 삭제! ( - 눌러서 완전히 지워준다.) 3. SceneDelegate 설정 (iOS 13 이상) func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionO..
[두깃] 깃허브 유저 정보 확인하기 (2022.04.08) 유저 정보: Singleton 패턴 깃허브에서 필요한 정보가 유저이름과 저장소라서 둘다 Realm 객체로 생성하여 저장하려고 했으나 유저이름은 간단하게 저장, 확인, 수정만 할 것이라서 굳이 DB에 저장하지 않아도 된다고 생각하여.. singleton 패턴을 사용하기로 결정 -> 바보였다. Singleton 패턴은 앱 종료시 사라진다. 다시 Realm에 저장하도록 하자. Github API : 존재하는 유저인지 https://docs.github.com/en/rest/reference/users Users - GitHub Docs Users The Users API allows to get public and private information about the authenticated user. Man..
[두깃] 시작화면 UI (2022.04.07) 개인프로젝트 시작.. 런치스크린 디자인 구상은 일단 두고 필요한 기능부터 구현하기로 하였다. 우선 앱을 처음 실행했을 때 시작화면의 UI부터 구현하기로 하였다. 이번 개인프로젝트는 스토리보드 없이 코드로 구현해보기로 결심했다.. NSLayoutConstraint.activate() Constraint 를 설정하는 코드는 NSLayoutConstraint.activate() 를 사용하여 이 부분이 constraint를 잡아주는 곳이라는 가독성을 높여보았다. isActive = true 를 작성하지 않아도 된다. // MARK: titleLabel titleLabel.text = "Github의 Name을 입력해주세요." titleLabel.translatesAutoresizingMaskIntoConstra..
[iOS] CAGradientLayer (그라데이션 배경) https://developer.apple.com/tutorials/app-dev-training/creating-a-gradient-background Apple Developer Documentation developer.apple.com iOS App Dev Tutorials 끝이 보이네요! 이번엔 그라데이션 배경을 만드는 방법에 대해 알아보겠습니다. segment (Today, Future, All) 마다 그라데이션 색상을 다르게 적용해볼 것입니다. 우선 사용할 CAGradientLayer 에 대해 알아보겠습니다. CAGradientLayer A layer that draws a color gradient over its background color, filling the shape of the..
[iOS] @discardableResult @ : Attribute 키워드 컴파일러에게 추가적인 정보를 알려주는 역할을 합니다. 1. 선언에 추가적인 정보를 제공하거나 2. 타입에 추가적인 정보를 제공합니다. // 1. 선언 @available(iOS 10.0) class MyClass { ... } // 2. 타입 func doSomething(completion: @escaping()->()) { ... } @discardableResult 함수의 리턴값을 활용하지 않는 경우에 사용합니다. 일반적으로 return값을 반환하는 함수를 선언하고 호출할 때, 이 값을 사용하지 않는다면 경고창으로 결과값을 사용하지 않는다고 알려줍니다. 이 때 @discardableResult 를 함수위에 써주면 "결과값을 사용하지 않아도 된다" 라고 컴파일러에게 정..
[Swift] Lv3. 여행경로 (dfs) https://programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 생각 경로를 찾아서 갔다가 아니라면 return 해주기 나라 전체 방문이 아니라 티켓을 모두 쓰는(방문하는) 문제였다. dfs를 오랜만에 봤더니.. 어떻게 푸는지 까먹어서 많이 헤맸다.. 코드 전역변수를 안쓰려고 하다보니 매개변수 넣는 부분이 너무 ~ 길어져서 조금 코드가 복잡해졌다. 1, 2번 테스트 케이스를 틀렸는데 아래 ..
[iOS] UICollectionReusableView (diffable datasource) https://developer.apple.com/tutorials/app-dev-training/creating-a-progress-view Apple Developer Documentation developer.apple.com 오늘도 apple의 튜토리얼을 보고 정리한 내용입니다. 잘못된 내용이 있을 수도 있음을... 우선 UICollectionReusableView를 사용하는 이유가 무엇인지? - 아래처럼 Header를 만들어주기 위해서 - 스크롤될 때 삭제하지 않고 재사용 큐에 배치하기 위해서 어떻게 UICollectionReusableView를 사용해서 커스텀 헤더를 만들 수 있는지 한번 알아보겠습니다. UICollectionReusableView A view that defines the b..
[Swift] Copy-on-Write 최적화 코드 상에서 값을 복사해서 담는다 하더라도, 실제 값이 바뀌기 전까지는 하나의 메모리 값을 공유해서 사용한다. 메모리를 적게 차지하기 위해서 Swift 언어가 내부에서 처리하는 매커니즘 코드로 한번 살펴보겠습니다. var array = [1, 2, 3, 4, 5, 6] var subArray = array[0...2] subArray.append(7) subArray 배열을 생성할 때 array의 배열 [0...2] 부분을 대입했지만 이때 값의 복사가 아니라 동일한 메모리 공간을 가르키고 있게 됩니다. 그리고 값의 변경이 일어날 때 (여기서 append()) 값이 복사됩니다. Swift에서는 원시타입 구조체(Int, Double, String)와 Array, Set, Dictionary 등 컬렉션 구조체..