본문 바로가기

프로그래밍/iOS-Swift29

[SWIFT] Tap Gesture - Keyboard Hide textfield를 구현하고 키보드로 입력 후 return을 누르던, 키보드 밖을 누르던 없어지지를 않았다... Tap Gesture로 Keyboard Hide extension ViewController { func initializeHideKeyboard() { let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) }; } - extension 옆에는 확장하려는 class명을 써주면 됨. (꼭 extension에 구.. 2021. 4. 5.
[SWIFT] EXTENSION EXTENSION - 존재하는 클래스, 구조체, 열거형, 프로토콜 타입에 새롭게 기능적인 부분 추가할 수 있는 문법 - 이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능 부여 가능 EXTENSION 기능 - 계산 property, 계산 타입 property 추가 기능 - instance method, type method 정의 - 새로운 initializer 제공 - subscripts(첨자) 접근방식 정의 - nested type(중첩 타입) 정의 및 사용 - 특정 프로토콜을 준수하는 현존 타입 정의 - 전역 함수가 아닌 프로토콜 자체에서 동작 정의 가능 EXTENSION 예 extension RandomNumberGenerator { func randomBool() -> Bool {.. 2021. 4. 5.
[SWIFT] Autoresizing 우선 Widget을 하나 드래그! 난 Image View로 선택 이제 제일 아래쪽에 보면 View as: iPhone 11이라고 선택된 Device를 볼 수 있음! 클릭! 그럼 다음 그림과 같이 선택 가능한 Device가 쫘르륵 보일 것임 나는 iPad(8th generation) 선택! 그럼 다음과 같이 비율이 조정 안되는 모습 확인 가능 다시 iPhone 11로 돌아와서,, Image View 클릭 후 오른쪽 상단 7개 아이콘 중 6번째 아이콘 클릭! 그럼 다음과 같이 Autoresizing이 보임! 저 과녁처럼 생긴 그림에서 빨간 선들을 클릭해서 보면 어떻게 Resizing되는지 확인 가능! 그럼 다음과 같이 비율이 맞춰지는 것을 볼 수 있음 ㅎㅎㅎ 2021. 4. 2.
[SWIFT] View Controller 수명주기 View Controller 수명주기 viewDidLoad() view controller content view (뷰 계층 구조의 맨 위) 생성되고 story board에서 load될 때 호출됨. view controller 출력은 method가 호출될 때까지 유효한 값을 갖도록 보장 content view가 처음 생성될 때 한 번만 호출 (초기화 코드 있을 경우 작성) controller가 처음 instance화 될 때 content view가 반드시 생성되는 것은 아님 system이나 code가 controller view 속성에 처음 access할 때 느리게 생성됨. viewWillAppear() controller content view가 앱의 view 계층 구조에 추가되기 직전에 호출됨 con.. 2021. 4. 2.
[SWIFT] 로컬 파일 로드하는 방법 후..... 진짜 몇시간을 삽질하다가 겨우 성공했다 ㅜㅜㅜ 나는 바보인가보다.. 로컬 파일 로드하는 방법!!! 1. 프로젝트 내에 로컬 파일 추가 (나는 Resource/butterfly.mp4 추가) 2. Build Phases > Copy Bundle Resources > + 버튼으로 추가한 로컬 파일 Add - 프로젝트 이름을 클릭하면 기본 설정 창이 뜸! 거기서 설정해주면 됨 3. 로컬 파일 로드 - 나는 URL 형식이 필요해서 다음과 같이 path를 얻고 url로 변환했다. let path = Bundle.main.path(forResource: "butterfly", ofType: "mp4")! let pathUrl = URL(fileURLWithPath: path) 2021. 3. 31.
[SWIFT] WKWebView WKWebView - WebView 기능 제공해주는 라이브러리 - 기존 UIWebView 대체하여 적용 (UIWebView는 iOS 9 기준으로 deprecate) - 더 빠른 자바스크립트 엔진인 Nitro 사용 - iOS 9 이상 버전 필요. 하위 버전과의 호환 이슈 있을 수 있음 - 로컬로 저장된 파일에 대한 Ajax 요청 지원 안함. - 쿠키 허용 설정 지원 안함, 고급 캐시 설정 지원 안함, 앱 종료 시 HTML 5 로컬 스토리지 삭제 WKUIDelegate, WKNavigationDelegate - WKUIDelegate : JavaScript, 기타 플러그인 컨텐츠 이벤트 캐치하여 동작. 웹 페이지 기본 사용자 인터페이스 요소 제공 - WKNavigationDelegate : 프로토콜로 페이지.. 2021. 3. 31.
[SWIFT] Lamp On Off App 1-1. 프로젝트에 사용할 image 드래그 - Copy items if needed 체크! 1-2. 이미지 확인 (lamp_off.png, lamp_on.png) 2-1. 이미지 뷰 추가하기 - 상단에 하얀색 동그라미로 표시한 + 버튼 클릭 후 image view 검색 → 뷰로 드래그 2-2. 이미지 뷰 크기 조정 및 Aspect Fit으로 설정 (뷰에 비율에 맞게 들어가기 위함) - 오른쪽 상단에 아이콘 7개 중 5번째 아이콘 클릭 → View > Content Mode에서 Aspect Fit 선택 2-3. 버튼 추가하기 - 과정과 똑같이 오른쪽 상단 + 버튼 클릭 후 button 검색 → 뷰로 드래그 3-1. Assistant 선택 3-2. Assistant 선택 후 화면 4-1. 이미지 뷰 Out.. 2021. 3. 31.
[SWIFT] 기본 연산자 할당 연산자(Assignment Operator) - 값 초기화 및 변경. 상수, 변수에 모두 사용 가능 - 튜플을 이용해 여러 값 한 번에 할당 가능 let b = 10 var a = 5 a = b print(a) // 10 let(x,y) = (1,2) print(x, y) //1 2 if x = y { //x = y는 값을 반환하지 않기 때문에 올바른 문법이 아님 } if x == y { print("same") } else { print("different") } // different 사칙 연산자 (Arithmetic Operators) - 모든 숫자 형에서 사칙 연산자 지원 - 덧셈 연산자로 문자열 합치기 가능 "hello, " + "world" // hello, world 나머지 연산자 (R.. 2021. 3. 30.
[SWIFT] Xcode 프로젝트 생성 1. Create a new Xcode project 클릭 2. App 선택 ! (난 앱만들거다!) 3. 각각 입력! - Product Name : 앱 이름 - Team : 개발자 프로그램에 등록된 ID or Team. 처음 시작할 때는 시뮬레이션을 사용할 것이므로 입력하지 않아도 됨 - Organization Identifier : 조직의 식별자 입력. 개인이나 조직의 도메인 주소를 역순으로 입력! - Bundle Identifier : 식별자. com.your_company.product_name으로 자동 생성 - Interface : SwiftUI(iOS 13부터 사용 가능)와 Storyboard 중 Storyboard 선택 - Life Cycle : Storyboard에서는 UIKit App De.. 2021. 3. 30.