일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링부트
- 스프링
- DBMS
- Xcode
- 인공지능
- MySQL
- swift
- 42seoul
- 데이터베이스
- 네트워크
- JPA
- 리눅스
- IOS
- Dining philosopher problem
- CI
- jenkins
- springboot
- 소켓
- 오라클
- 다이어리
- 밥먹는 철학자
- 스프링부트 웹 소켓
- AI
- 프로그래밍언어론
- libasm
- Spring
- 아이패드다이어리
- javascript
- sql
- CD
- Today
- Total
목록프로그래밍 언어 (34)
Hi yoahn 개발블로그
이미지 크기를 조정하기 위해 resize 하는 방법도 있고, 이미지뷰의 속성을 조정하여 간단하게 조정하는 방법이 있다. 이미지를 resize 하는 방법은 복잡해서 UIImageView 의 옵션을 조정해서 이미지 조정하는 방법을 사용했다 UIImageView 를 누르고 Attributes Inspector 탭을 눌러서 View의 Content 모드 조정 1. Scale To Fill - 비율 무시 - ImageView 의 Width와 Height에 이미지를 강제로 늘려서 맞춤 2. Aspect Fit - 원본 비율 유지 - ImageView 밖으로 이미지가 나가지 않는 선에서 최대 크기 - 비율이 맞지 않는 경우 내부에 여백 생김 3. Aspect Fill - 원본 비율 유지, 여백 없이 딱 맞게 사이즈 ..
1. View Controller의 생명주기 1 ) viewDidLoad 뷰가 로드 된 상태 - loadView()로 뷰의 컨트롤러가 메모리에 로드되고 난 후에 호출됨 이 메소드는 뷰의 로딩이 완료되었을 때 시스템에 의해 자동으로 호출되기때문에 일반적으로 리소스를 초기화하거나 초기 화면을 구성하는 용도로 사용 화면이 처음 만들어질 때 한 번만 실행됨 -> 처음 한 번만 실행되야 하는 초기화 코드가 있을 경우 이 메소드 내부에 작성 2 ) viewWillAppear 뷰가 나타날 예정 - 뷰가 이제 나타날 거라는 신호를 컨트롤러에게 알리는 역할 다른 뷰로 갔다가 돌아오는 상황에 할 처리를 이 메소드에서 하면 됨 3 ) viewDidAppear 뷰가 나타난 상태 - 뷰가 나타났다는 것을 컨트롤러에게 알리는 역..
jiyeonlab.tistory.com/8 [iOS] Segue 연결 방법 [iOS] Segue 연결 Segue 란 iOS에서 여러 ViewController 사이의 전환 시에 사용하는 객체이다. 나는 보통 인터페이스 빌더에서 직접 연결하는 방법을 썼었다. 이렇게 하면 ViewController 간의 연결관계를 직 jiyeonlab.tistory.com 스토리보드에서 Ctrl 을 누르고 바로 연결하는 직관적인 방법도 있지만, 코드를 사용하는 방법도 있다. Segue의 Identifier 설정 후, 코드에서 performSegue() 1. 스토리보드에서 Segue 연결 YellowViewController 에서 연결 2. Segue 화살표를 누르고, Inspector 탭에서 Segue의 Identifier..
1. UILabel 클래스 속성 .textAlignment .left / .right / .center .justified : 행 맞추기 .natural : 지역화 기준으로 정렬 .baselineAdjustment .alignCenters : 글자가 View Bound 세로 기준으로 중앙 정렬 .alignBaselines : 글자의 아래부분이 정해진 위치 기준으로 정렬 .none : 글자가 View Bound 세로 기준으로 좌상단 정렬 (default) .numberOfLines Label 에서 출력가능한 line 수를 정합니다. 0 은 제한이 없음을 표시합니다. AttributedString 의 경우도 마찬가지로 적용이됩니다. .adjustFontSizeToFitWidth YES 로 설정한 경우, La..
1. UITabBarController 화면에 보여줄 하위ViewController 를 결정하는 셀력션을 가진 인터페이스가 있고 , radio-style 을 띄고 있다. 각각의 tab 은 CustomViewController 와 관련되어 있고, tab 이 선택되면 해당 ViewController 의 rootViewController 를 화면에 그린다. 각각의 tab 에 관련된 인터페이스는 다른 tab 의 인터페이스와는 유사할 필요가 없다. TabBarViewController 의 TabBar 에 직접 접근하지는 않아야한다. 만약 설정하고 싶다면, rootView 의 viewControllers 프로퍼티 에 할당해서 사용해야한다. UITabItem 이 6개가 넘어가게 되면 처음 4개와 기타🎸항목을 표시한다..
1. 오류처리 스위프트에서 오류(Error)는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현됩니다. Error 프로토콜은 사실상 요구사항이 없는 빈 프로토콜일 뿐이지만, 오류를 표현하기 위한 타입(주로 열거형)은 이 프로토콜을 채택합니다. 스위프트의 열거형은 오류의 종류를 나타내기에 아주 적합한 기능입니다. 연관 값을 통해 오류에 관한 부가 정보를 제공할 수도 있습니다. 1.1 오류 표현 Error 프로토콜과 열거형을 통해서 오류를 표현 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } 연관값 각 하나의 타입에 대해 인스턴스마다 다른 값을 가지게 ..
1. Assert / guard 애플리케이션이 동작 도중에 생성하는 다양한 연산 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리할 수 있습니다. 1.1 Assertion assert(_:_:file:line:) 함수를 사용합니다. assert 함수는 디버깅 모드에서만 동작합니다. 배포하는 애플리케이션에서는 제외됩니다. 예상했던 조건의 검증을 위하여 사용합니다. var someInt: Int = 0 // 검증 조건과 실패시 나타날 문구를 작성해 줍니다 // 검증 조건에 부합하므로 지나갑니다 // 검증 조건에 부합하지 않는 경우 메시지를 출력하고 멈춤 assert(someInt == 0, "someInt != 0") someInt = 1 //assert(someInt == 0) /..
1. 옵셔널 체이닝 옵셔널 체이닝은 옵셔널의 내부의 내부의 내부로 옵셔널이 연결되어 있을 때 유용하게 활용할 수 있습니다. 매번 nil 확인을 하지 않고 최종적으로 원하는 값이 있는지 없는지 확인할 수 있습니다. // 예제 클래스 // 사람 클래스 class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } // 사람이 사는 집 클래스 class Apartment { var buildingNumber: String var roomNumber: String var `guard`: Person? var owner: Person? init(dong: String, ho: ..
1. 상속 상속은 클래스, 프로토콜 등에서 가능합니다. 열거형, 구조체는 상속이 불가능합니다. 스위프트의 클래스는 단일상속으로, 다중상속을 지원하지 않습니다. 생성자는 자동 상속이 되지 않는다. class 이름: 상속받을 클래스 이름 { } 지정 생성자를 재정의 할 때는 override 키워드를 붙여야 한다. 자식 클래스에서 지정 생성자를 편의 생성자로 변경할 수도 있지만 이때도 override 를 붙여야 한다. 부모 클래스의 편의 생성자를 자식 클래스에서 직접 호출할 수 없다. 부모 클래스의 생성자와 동일한 이름을 사용하는 경우 override를 붙여줘야 한다. https://icksw.tistory.com/49 [Swift 문법] Swift 공식 문서 정리 - 14 - Initialization (생..
1. 클로저 클로저는 실행가능한 코드 블럭입니다. 함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일합니다. 함수는 이름이 있는 클로저입니다. 일급객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능합니다. 1.1 클로저 문법 클로저는 중괄호 { }로 감싸져있습니다. 괄호를 이용해 파라미터를 정의합니다. (매개변수 필요 없으면 빈칸) -> 을 이용해 반환 타입을 명시합니다. (없으면 Void) "in" 키워드를 이용해 실행 코드와 분리합니다. { (매개변수 목록) -> 반환타입 in 실행 코드 } 1.2 클로저 사용 // sum이라는 상수에 클로저를 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in ret..