[스탠포드]Swift 강좌 - ios 구조
ios는 4개의 계층으로 구성되어 있다.
4계층 : Cocoa Touch(UIKit) : UI를 담당하는 부분. 버튼, 텍스트필드 등. Alerts, Core Motion, WebView, View Hierarchy, Map Kit, Image Picker, Controls, Camera, Multi-Touch 등
3계층 : Media : Core Audio, OpenAL, PDF, Audio Mixing, Audio Recording, Core Animation, Video PlayBack, OpenGL ES, JPEG, PNG, TIFF
2계층 : Core Service(Foundation) : Collections, Core Location, 주소록, Net Service, Threading, Networking, File Access, SqlLite, URL Utilities
1계층 : Core OS : BSD 계열의 unix 이다. 그래서 이 속에서 일어나는 모든 일들은 기본적으로 c언어를 기반으로 한다.
Sockets, File System, Bonjour, Security, KeyChain Access, Certificates 관련 라이브러리들이 존재한다.
예제 자료 - 카드 뒤집기
ViewController.swift
주의
1.모든 클래스의 변수는 초기화를 해야만한다
1-1.옵셔널 타입은 초기화를 하지 않아도 된다.
2.초기화 방법은 2가지가 있다. 이니셜라이저(init) 사용, 직접 초기화 (var num = 0)
3.스위프트는 강한타입의 언어다.
4.스위프트는 타입추론이 가능한 언어다.
5.모든 속성은 속성 감시자 (didset, willset) 를 선언할 수 있다.
import UIKit
/*
UIKit 라이브러리 : UI를 담당하는 부분. 버튼, 텍스트필드 등. Alerts, Core Motion, WebView, View Hierarchy,
Map Kit, Image Picker, Controls, Camera, Multi-Touch 등
UIViewController 는 UIKit에 포함되어 있다.
*/
class ViewController: UIViewController {
//카운트 Int
var flipCount = 0 {
didSet{
flipCountLabel.text = "count:\(flipCount)"
}
}
//카운트 라벨
@IBOutlet weak var flipCountLabel: UILabel!
//카드 버튼 배열
@IBOutlet var cardButtons: [UIButton]!
//이모티콘 배열
var emojiChoices : Array<String> = ["😃", "😎" , "😃" ,"😎"]
//스위프트에는 모든 인자에는 이름이 있다.
//외부 인자 이름, 내부 인자 이름
@IBAction func touchCard(_ sender: UIButton) {
print("hahah")
flipCount += 1
//버튼이 눌리면 배열얼 보고 눌러진 버튼을 찾아내면
//어떤 카드인지 알 수 있다.
//firstIndex 리턴 값은 옵셔널 값이다.
let cardNumber = cardButtons.firstIndex(of: sender)
//옵셔널의 값 구하기
if let cardNum = cardNumber {
//print("cardNum = \(cardNum)")
flipCard(withEmoji: emojiChoices[cardNum], on: sender)
}else{
print("값이 없습니다.")
}
}
// @IBAction func touchSecondCard(_ sender: UIButton) {
// flipCount += 1
// flipCard(withEmoji: "😜", on: sender)
//
// }
//카드 뒤집기 합수
func flipCard(withEmoji emoji:String , on button: UIButton) {
if button.currentTitle == emoji {
button.setTitle("", for: .normal)
button.backgroundColor = #colorLiteral(red: 0.9372549057, green: 0.3490196168, blue: 0.1921568662, alpha: 1)
}else{
button.setTitle(emoji, for: .normal)
button.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
}
}
}
참고
www.edwith.org/swiftapp/lecture/26619/?isDesc=false
'아이폰 개발 > Swift' 카테고리의 다른 글
swift Custom UI - 코드로 UI 만들기&데이터 전달 (0) | 2021.03.23 |
---|---|
[스탠포드]Swift 강좌 - MVC 패턴 (0) | 2021.03.09 |
swift 기초 - assert , guard , protocol (1) | 2021.03.05 |
swift 기초 - 옵셔널 체이닝, 타입캐스팅 (0) | 2021.03.05 |
swift 기초 - 상속, 인스턴스의 생성과 소멸 (0) | 2021.03.04 |