Archive/꼼꼼한 재은씨 시리즈 38

폰트는 앱 디자인의 눈코입!

외부 폰트를 적용하는 방법을 알아보자. 우리는 커스텀 폰트라고 얘기할건데 그리 어렵지 않다. 1. 사용할 폰트를 가져와서 xcode내의 viewController와 같은 위치에 넣는다 2. info.plist를 열어서 폰트 키 항목을 찾아 추가한다. 키의 이름은 [ Fonts provided by application ] 이다. 3. 생성된 키에 하위 항목을 추가하고 폰트 파일의 이름을 입력한다. 4. 프로젝트 정보창을 열고 탭에서 copy bundle resource 항목에 폰트 파일을 리소스로 추가한다. 5. 폰트를 사용할 뷰 컨트롤러의 viewDidLoad 메송드의 적당한 위치에 임시코드를 작성하여 확인절차를 거친 후 사용한다. - 적용 후 삭제 커스텀 폰트 적용하는 법 let customFont ..

UI 커스터마이징 bounds 속성과 frame속성 비교

frame 속성과 bounds 을 보기 쉽게 (x,y,width,height) 형식으로 나타내면 다음과 같습니다. 프레임 속성과 바운즈 속성에서 x,y 좌표 기준이 다른데, frame 속성은 슈퍼 뷰가 기준이다 즉, 슈퍼뷰의 원점 (0,0)으로 하여 좌표를 계산 bounds 속성은 좌표의 기준점이 자기 자신이다. 즉, 화면 전체의 원점과는 별개로 항상 자기 자신을 좌표의 기준으로 삼는다. frame - 위치나 크기 bounds - 객체간의 관계에서 주로 사용 bounds의 좌표를 강제로 변경하면 뷰의 위치는 변하지 않지만, 그 뷰의 내뷰에 정의된 서브 뷰들은 슈퍼 뷰가 이동한 것으로 인식하고 자신들의 위치를 그에 따라서 이동시킨다. 이는 자식 뷰가 기준을 이동한 것으로 인식하고 자신들의 위치를 그에 따라..

💜 iOS 개발에 도움이 되는 사이트들

- asset 파일 만들 때 makeappicon.com/ 여기 사이트 들어가면 Asset 파일 이미지 자동으로 크기에 맞게 변환해준다. 앱 디스플레이 네임 변경은 메타 정보에서 display-name으로 변경이 가능하나, 그러나 info.plist 에서 bundle을 변경해야 변경되는 경우도 있다. - UIColor 코드 변환 사이트 www.uicolor.io/ Convert HEX & RGB colors to UIColor UIColor.io is a website that helps you convert HEX & RGB colors to UIColor for Objective-C, Swift and Xamarin featuring a colorpicker and copy to clipboard f..

tableView - Xcode 버그 및 skillUp

테이블뷰를 사용 시, 사용자가 이미지를 주는 경우와 주지 않는 경우의 설정을 나눠서 하려고 하는데, 저렇게 설정하면 관리의 용이함을 얻을 수 있다. 그러니까,, 설명이 귀찮은데 일단 박스색을 보면서 하나하나 보자 최상단에 빨간색 박스를 클릭한 후 프로토타입 셀 부분을 2로 늘려주면 된다. 그러면 다음 그림과 같이 셀이 2개가 나오는데, 1개당 2개를 보여주는게 아니라 한 데이터가 들어왔을때, 처리할 수 있는 폼(Form - 어쩌면 선택지? 아니면 틀?) 이 2개가 된다는 말이다. 초록 박스는 사진이 없는 경우 파란 박스는 사진이 있는 경우다. 여기서 중요한건, 초록 셀과 파란 셀의 identifier를 다르게 설정해줘야 한다. 왜 다르게 설정하냐면 그건 아래 코드를 보자 다음과 같이 어떤 셀을 사용할 것..

[iOS 13 이후 ] AppDelegate vs SceneDelegate 차이

잘 쓰여진 글 : velog.io/@dev-lena/iOS-AppDelegate%EC%99%80-SceneDelegate [iOS] AppDelegate와 SceneDelegate Xcode에서 프로젝트를 생성하면 자동으로 AppDelegate.swift와 SceneDelegate.swift 파일이 추가되어 있어요! 오늘은 이 두 swift 파일에 있는 AppDelegate클래스와 SceneDelegate클래스에 대해서 알아보려고해요 😄 velog.io 음,, 그러니까 정리하자면 내 기준으로는 백그라운드로 갈때나 포어그라운드로 올라올때 등등 원래는 appDelegate에서 처리했었는데 scene가 담당함 로컬알림 이 부분의 코드가 씬 쪽으로 넘어갔다고 생각하자. 추후에 더 생각나면 수정하기 ++ 추가 +..

ARC(Auto Reference Counter) 시스템 - IBOutlet

스토리보드에서 연결할 때, 강한참조 약한참조 - strong, weak가 있다. 이들을 제대로 이해하려면 ARC 시스템에 대해서 먼저 이해할 필요가 있다. ARC란 쉽게 말해서 '변수를 몇 군데에서 저장하고 있는가?' 이다. - 운영체제나 시스템프로그래밍에서 file management 개념에서 비슷한 개념을 우리는 배운 적이 있다. 해당 변수를 어디선가 사용하면 +1 하고 사용이 끝나면 -1한다. 어디선가 카운트가 0이 되면 변수를 사용하지 않는다는 뜻임으로 메모리를 회소하여 재사용 가능하도록 메모리 공간을 확보합니다. strong 타입으로 선언된 아웃렛 변수에 어디선가 참조하면 그 순간 ARC가 추적 가능하도록 카운트가 +1 처리됩니다. 즉, 열 곳에서 사용하면 카운트는 +10이 되서 내가 7곳에서 ..

배열 변수를 AppDelegate 클래스에 저장하는 이유 (세 가지 이슈)

세 가지 이슈 - 접근성, 데이터 보존 그리고 일관성. memolist 배열은 앱의 여러 객체가 참조하는 공유 데이터. - 일종의 공용 저장소. 따라서 memolist 배열은 뷰 컨트롤러나 객체가 접근하기 쉬운 위치에 저장되어야 한다. 또한 사용 중간에 메모리 관리 이슈나 객체 소멸로 인해 데이터가 삭제되지 않아야 하며, 여러 곳에서 사용하더라도 일관성을 유지할 수 있어야 하며, 파편화되거나 쪼개지지 않아야 한다. 글 작성 화면에서 사용하는 데이터 객체와 등록한 글의 목록에서의 객체가 일치하지 않으면 문제가 생길 수 있다. 이런 조건을 충족시키는 저장소로는 뷰 컨트롤러는 적당하지가 않다. 간단히 이유를 들어보자면, 뷰 컨트롤러는 생명 주기가 길지가 않아서, 사용자가 화면 전환시 소멸하기 때문이다. 또한 ..