
어제 유데미 강의를 보면서 새로운 걸 배웠어여. assets 파일에 pdf 형식도 넣을 수가 있더라구여!?! 따단 그래서 알아본 bitmap과 vector 방식의 차이입니다. 우선 아래는 같은 이미지를 SVG 형식(vector방식)과 PNG(bitmap 방식) 형식으로 다운 받아본건데, 차이가 느껴지실까요? 이 이미지를 기억하면서 아래 내용을 봐주십셔 ㅎㅎㅎ 비트에 몸을 맡겨~ 비트맵(bitmap) 비트맵 방식은 이미지를 점(픽셀)으로 표현한다고 해요. 점들이 모여 하나의 이미지가 완성되는데, 더 많은 점이 있을수록 더 선명하게 보여요. 아래처럼 말이져. 아이폰 12 pro 모델의 경우, 1284 x 2778의 해상도를 갖는데, 이는 가로로 1284개, 세로로 2778개의 픽셀로 이루어져 있다는 말이져...

앱을 만들다 보면, 생각보다 아이폰의 화면 사이즈가 제각각이라는 생각을 멈출 수가 없더군여? (짜장면으로 통일 하라구,,,) 그래서 찾아보니, 생각보다 사이즈가 간단하지는 않았어여 ㅎㅎ 나같은 머리로는 이해모대,,, 그래도 정리를 해보려는 노력의 노력을 해볼게여 일단 Point와 pixel을 알아야 해요 Point(pt) - 1인치를 72로 나눈 값 : 0.35146mm 우리가 앱을 만들 때 하는 제약값들은 모두 point가 기준 Pixel(px) - 모니터의 해상도를 나타내는 단위 동그란 점도 엄청나게 확대를 해보면 아래처럼 점(픽셀)으로 이루어져있음 아주 예전에는 1point = 1pixel이었다고 함니당. (MAC 기준) 그런데 애플에서 레티나 디스플레이를 도입하면서 1point = 1pixel 공..

오늘은 유용하게 쓰이는 고차함수에 대해 알아볼게욧! map(_:) map함수는 기존의 배열, 딕셔너리 등을 매핑하여 새로운 배열로 리턴해주는 함수에여. 매핑 방식은 제가 정해주면 됩니다요. 제네릭형태()로 선언이 되어있기 때문에, 어떤 타입에 써도 상관이 없겠져?! 그럼 일단 한 번 예제를 볼까요? 아래와 같이 단순하게 1~5까지 있는 배열을 만들었어요. let numbers = [1, 2, 3, 4, 5] 이 배열에 점을 찍고 map 메서드를 실행해보면? 위와 같이 transform이라는 파라미터를 받을 수 있는 클로저가 나온다리~ map의 정의에서는 제네릭 형태였지만, numbers라는 배열이 Int 형태기 때문에 placeholder 부분을 보면 (Int)로 바뀐 거 보이시져? 그럼 저는 numbe..

오늘은 강의를 듣던 중 넘나 유용해서 정리하게 된 CaseIterable protocol 특집! CaseIterable는 못참지,,, 시작~ CaseIterable protocol 이 프로토콜은 "모든 값들은 컬렉션으로 제공해주는 타입"이에요. 보통 연관값(associated value)가 없는 열거형(Enum) 타입에서 주로 사용하쥬. 이 타입을 사용하면 allCases라는 속성을 통해서 모든 케이스들의 컬렉션에 접근할 수가 있어요. 뭔말이에유? 예시 ㄱㄱㄲㄲ ㄲㄱㄲㄱ 여기 CaseIterable 프로토콜을 채택한 열거형이 있습니다. (연관값 없음) enum CompassDirection: CaseIterable { case north, south, east, west } 이렇게 CaseIterable..

Array에 이어 생각보다 많이 쓰고 있는 Dictionary에 대해 좀 정리해볼게요. 문법 강의만 들을 때는 이걸 어디다가 쓰지,,,했는데 엄청 쓰네,,, 그래서 알아본 Dictionary는 키와 값의 짝으로 이루어진 배열이에요. 처음보는 스탈이라 처음에는 낯설었지만, 쓰다보면 익숙해지더라구여! 이렇게 말이져? var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] key : "YYZ", "DUB" value : "Toronto Pearson", "Dublin" Dictionary 모든 키들은 같은 타입이어야하구요, 마찬가지로 모든 밸류들도 같은 타입이어야 합니다. key는 중복이 불가능(유일한 값)해요! (value는 ..

swift의 컬렉션 타입(Collection Type)에는 총 3개가 있쥬? Array, Dictionary, Set이 되겠습니다. 오늘은 Array(배열)부터 차근 차근 알아가볼게유? Array(배열) 말 그대로 "동일한 특성을 가지며 일정한 규칙에 따라 여러 요소가 나열되어 있는 데이터들의 집합"이라고 생각하면 됩니다. // Array 예시 let names: String = ["Anna", "Alex", "Brian", "Jack", "Anna"] 같은 타입의 요소들만 담을 수 있구요, 배열 내의 요소들은 중복이 가능해요! (순서로 구별) [ ](대괄호) 문법 (subscript)을 쓰며, 접근시에는 index로 접근을 합니다. index는 배열의 첫번째 요소부터 0, 1, 2, 3...으로 순서가..

지난 번에는 스토리보드에서 탭바컨트롤러를 만들어봤는데요. 스토리보드가 없어도 탭바컨트롤러를 만들 수 있다네여?! 롸?! 그래서 오늘은 스토리보드 없이 UITabBarController 구현하기 입니다. 1. Main연결 삭제하기 프로젝트를 만든 후 제일 먼저 나오는 General 셋팅에 보면 Development Info-Main Interface가 있는데요. 여기에 있는 Main을 삭제해주시면 됩니다. 2. Info.plist에서 스토리보드 항목 삭제 & 스토리보드 삭제 dicator에 있는 Info.plist에서 Storyboard Name 항목도 삭제해주고, 이제 필요없어진 Main.storyboard항목도 Bye~ 그리고 탭바를 두개 만들 예정이니까, 연결할 뷰컨트롤러(ViewController)..

마지막 시간! 구매하기 버튼 구현 시간입니다~ 2. 구매하기 버튼 구현 구매하기 버튼을 누르면 endTotalLbl에 있는 금액이 alert창에 뜨면서 '취소'와 '확인' 버튼이 나오도록! 오케바뤼 우선 구매하기 버튼에 이벤트가 발생하면 구현될 함수를 선언해줍니다요. @objc func buyBtnTapped(_ sender: UIButton) { } 그리고 리셋버튼하고 똑같이 UIAlertController의 객체를 찍어내도록 해야쥬. alert의 타이틀은 "정말 구매하시겠습니까?" 메시지는 "구매 금액은 ~~원입니다." let alert = UIAlertController(title: "정말 구매하시겠습니까?", message: "구매금액은 \(firstMenu + secondMenu + thirdM..
- Total
- Today
- Yesterday