Image set을 이용하여 기기별로 이미지를 각각 지정하여도 iphone5/5s에서 Retina 4-inch의 이미지가 적용이 되지 않고 2x의 이미지가 적용되는 현상이 발생했다. 적용되지 않았던 원인은!! Deployment Target을 6.0으로 지정했기 때문에!!! 7.0으로 변경하니 제대로 적용되었다. 7.0부터 적용되며 그 이하에서는 Retina 4-inch대신 2x이미지가 적용되는듯 하다.
애플리케이션 상태에 대해 알아보자. not running : 앱이 시작되지 않은 상태 foreground(포그라운드) : 현재 사용자에게 보여지고 있는 상태, 포그라운드 상태에서 활성, 비활성의 상태가 된다. - active(활성) : 포그라운드에서 실행되고 있으며 이벤트를 처리하고 있는 상황 - not active(비활성) : 포그라운드에서 실행되고 있지만 전화가 걸려오거나 하여 이벤트를 처리하지 않는 상황 background(백그라운드) : 포그라운드 상태에서 다른 앱을 실행시킬 때 해당 앱은 백그라운드 상태가 되며 아직 작업중인 일을 마무리하거나 백그라운드상태에서의 코드 실행을 할 수 있다. suspended(서스펜디드) : 백그라운드 상황에서 코드실행을 하지 않는 상황, CPU나 배터리 소모가 없다. 언제든지 메모리 부족으로 종료될 수 있으므로 서스펜디드 상태가 되기전에 비 휘발성 저장소에 데이터 저장을 해야한다.
segues : 스토리보드의 A화면에서 B화면으로 전화하는 것. A화면에서 버튼을 누르면 B화면으로 전환되는 것을 해보겠다. Single VIew Application 프로젝트 생성 > 그림과 같이 스토리보드가 자동 생성 된 것 확인. A화면 View를 클릭 후 버튼(button)을 드래그 하여 추가 > View Controller오브젝트(B화면)도 드래그하여 추가하면 아래 그림과 같이 두개의 화면이 나타난다. A화면의 버튼을 눌렀을 때 B화면으로 이동하도록 하기 위해서 A화면의 버튼을 선택 > control 키를 누른상태에서 버튼을 B화면으로 드래그 > 다음과 같은 메뉴가 출력 > modal선택 아래의 그림과 같이 화살표가 생성되었으면 제대로 한 것이다. 이대로 실행한다면 문제가 발생한다. 왜냐하면 B화면의 뷰컨트롤러가 없기 때문이다. file > cocoa touch > UIViewController > Next 생성. 스토리보드에서 아까 생성한 B컨트롤러 선택 > class에 방금 생성한 뷰컨트롤러 지정. 실행해보자.
if문 var num = 7 if num > 2 { // num이 2보다 클 경우 이 부분의 코드가 실행됨. } if~ else 문 var num = 7 if num > 2 { // num이 2보다 클 경우 이 부분의 코드가 실행됨. } else { // num이 2보다 크지 않을 경우 이부분의 코드가 실행됨. } if~ else if 문 var score = 85 if score > 90 { // "A" } else if num > 80 { // "B" } else { // "F" } switch 문 : if~ else if 문 대신에 사용가능함. case문 코드가 실행된 후 switch문이 끝나기 때문에 각 case문 마지막에 break를 사용하지 않는다. var grade = "A" switch grade { case "A": // grade가 A이므로 해당 코드 출력 case "B": // grade가 B일 때 출력 case "C", "D", 'F": // grade가 C이거나 D이거나 F일 때 출력 default: // grade가 모든 케이스에 적합하지 않을 때 출력 }
Xcode IDE를 사용하여 프로젝트를 생성해보자. 기존에 프로젝트를 생성하는 방법과 동일하게 하되 아래 그림과 같이 언어를 swift를 선택해준다. 기존에는 .h, .m 두개의 파일이 존재했다면 스위프트는 하나의 파일!! 그럼 아래의 그림과 같이 왼쪽에 .swift라는 확장자를 갖는 파일이 생성될 것이다. 이제 변수를 생성하는 방법에 대해 알아보자. var num = 7 - var을 사용하여 변수생성 - 세미콜론을 붙이지 않는다. - 변수를 선언하면 타입을 자동으로 결정한다.(위의 경우 Int) var num:Int = 7 var phonename:String = "iPhone" 위와 같이 명시적으로 선언할 수 있다.
plist에서 Icon already includes gloss effects를 추가하고 값을 YES로 하여 적용하면 된다. 이래도 계속 안된다면? xcode5에서 asset catalog를 사용한다면? images.xcassets -> AppIcon -> iOS icon is pre-rendered 체크 해주어야 한다.