목록IOS (31)
브래의 슬기로운 코딩 생활
아이콘을 탭하면 모달창이 나오고 learn more버튼을 탭하면 특정 url로 가는 safari앱을 실행시키는 프로젝트이다. Detail 스토리보드를 만들고 FrameworkDetailViewController를 만들어서 연결해준다. FrameworkDetailViewController 소스 safari 관련함수를 쓰기 위해서는 다음을 import해주어야 한다. 다음은 메인 스토리보드를 관리하는 뷰컨트롤러의 소스중 일부 이다. 이 코드블럭을 실행하려면 45번째 줄의 소스가 필요하다. 사실 이건 애플 프레임워크 프로젝트를 만들어 놓고 모달 기능만 추가한 프로젝트라서 모든 소스를 포스팅하지 않고 추가한 부분만 포스팅 하였다.
UICollectionView 구현을 위해서는 presentation, data, layout을 구현해야 한다. UICollectionView 소스 UICollectionViewCell 소스 BannerInfo소스
화면 전환 방식 - 1 : present 방식 ViewController가 다른 ViewController 호출(present) 다른 ViewController를 Modal로 띄움 UIViewController에 정의된 present 메소드를 사용 돌아올 때 - presentingViewController?.dismiss(animated:) full screen으로 화면 띄우기 - vc.modalPresentationStyle = .fullScreen 뷰 컨트롤러 추가 뷰 컨트롤러 선택 - 아이덴티티 인스펙터 - 스토리보드 아이디 설정(코드에서 쓸) 메인 뷰에 클릭하면 화면 이동이 될 버튼 추가 어시스턴트 에디터 - 버튼을 컨트롤 키를 누르며 소스코드의 클래스로 드래그 하여 액션 함수 추가 위와같이 소스..
Autolayout (오토 레이아웃 이란?) 오토 레이아웃(Auto Layout)은 제약 조건(Constraints)을 이용해서 뷰의 위치를 지정하는 것. 다시 말하면, 두 뷰 사이의 관계를 제약 조건이라는 것을 이용해서 뷰의 크기와 위치를 지정하는 것. 오토 레이아웃은 여러 해상도를 지원하기 위해 만들어 졌다. 아이폰의 크기가 다양해지면서 해상도도 달라졌는데, 다른 크기에서도 같은 화면을 보여주기 위해 오토 레이아웃을 사용한다. 세로 보기 화면뿐만 아니라 가로 보기 화면까지도 지원한다. 위의 이미지를 보면 아이폰SE와 아이폰8, 아이폰8 Plus 기종이 달라도 보여지는 화면이 똑같다는 것을 볼 수 있다. 위의 이미지와 같이 오토 레이아웃은 제약 조건(Constraints)을 이용하여 자동으로 해상도에 ..
앱 개발 기술 분류 native - 안드로이드: JAVA, Kotlin - iOS: Swift, Objective-C cross platform - React native - Flutter - Web View를 감싸고 있는 웹사이트 - HTML+CSS+JS - Apache Cordova Xcode로 Swift문법 공부하기 Playground로 Swift문법 공부하기 Playground로 Swift문법과 UI테스트 폰트 조절: [Xcode]-[Preferences]-[Themes] 새로운 앱 만들기: [File]-[New]-[Project]-[iOS]-[App] 프로젝트 기본 설정 같은 이름의 프로젝트가 이미 있다면 폴더 변경하거나 이름 변경 프로젝트 생성 후 Xcode 초기 화면 Deployment Ta..
guard문(조건식이 거짓이면 실행) guard문은 swift 2에 도입된 구문 guard문은 표현식이 거짓(false)으로 판단될 경우에 수행될 else 절을 반드시 포함해야 함 - else 절에 속한 코드는 현재의 코드 흐름을 빠져 나갈 수 있는 구문(return, break, continue, throw 구문)을 반드시 포함해야 함 - 또는 다른 함수를 else 코드 블록 안에서 호출할 수도 있음 guard else { // 표현식이 거짓일 경우에 실행될 코드 } // 표현식이 참일 경우에 실행되는 코드는 이곳에 위치 guard문은 기본적으로 특정 조건에 맞지 않을 경우에 현재의 함수나 반복문에서 빠져 나갈 수 있도록 하는 ‘조기 출구(early exit)’ 전략을 제공 guard~let의 활용 g..
데이터 타입(자료형, data type) 정수형 숫자를 저장하는 변수 - var myNumber = 10 - myNumber라는 이름의 변수를 생성했으며, 숫자 10을 할당 - var myNumber : Int = 10 (위와 같이 초깃값이 있을 경우에는 컴파일러가 타입 추론(type inference)을 하므로 데이터 타입을 명시할 필요 없음) Bool, Character, Int, Float, Double, String, Void var x : Int x = 10 //주의 error '=' must have consistent whitespace on both sides ('=' 양쪽에 일관된 공백이 있어야 함) 일반적으로 초깃값을 주지 않을 경우에만 자료형을 씀 - var welcomeMessage..
API, Open API, RESTful을 간단하게 한 문장으로 정리 API (Application Programming Interface)는 애플리케이션들이 서로 상호작용하기 위해 사용하는 인터페이스이고, Open API는 개방적으로 접근하고 사용할 수 있는 API를 말하며, RESTful은 웹 서비스를 구축하는데 사용되는 아키텍처 스타일이다. URI와 URL URI는 리소스를 유일하게 식별하기 위한 문자열이며, URL은 그 중에서도 리소스의 위치를 지정하는 형식의 문자열이다. ViewController.swift 파일 수정 protocol 채택(adopt)과 준수(conform)개념, 필수 메서드(cellForRowAt, numberOfRowsInSection), indexPath 프로토콜 채택은 객..
- 과제 - func multiplyByTen(value: Int) { print(value*10) }multiplyByTen(value: 3) //30 강제 언래핑 func multiplyByTen(value: Int?) { print(value!*10) //강제 언래핑 }multiplyByTen(value: 3) //30 if let 옵셔널 바인딩 func multiplyByTen(value: Int?) { if let value{ print(value*10) //if let 옵셔널 바인딩 }}multiplyByTen(value: 3) //30 func multiplyByTen(value: Int?) { if let value{ print(value*10) //if let 옵셔널 바인딩 }else {..
func getData() { guard let url = URL(string: movieURL) else { print("Invalid URL") return } let session = URLSession(configuration: .default) let task = session.dataTask(with: url) { [weak self] (data, response, error) in guard let self = self else { return } if let error = error { print(error) return } guard let JSONdata = data else { print("No data received") return } let decoder = JSONDecoder..