[CS193p] 01강. Introduction to iOS 11, Xcode 9 and Swift 4
👨🏻‍💻iOS 공부/Stanford-CS193p

[CS193p] 01강. Introduction to iOS 11, Xcode 9 and Swift 4

728x90
반응형

< 1. Introduction to iOS 11, Xcode 9 and Swift 4 >

객체 지향이고 C 기반이다.

총 4개의 레이어로 이루어져있다.

concentration 게임 :

카드 뒤집기 게임이다. 같은 쌍을 찾기 위해서 여러 카드를 뒤집는다. 뒤집기를 반복하며 카드를 기억해서 효율적으로 짝을 맞추는 것, 이것이 앱 빌딩과 유사하다!

  • Xcode project 생성

  • IOS에서 Single View App 생성
    가장 간단하기 때문이다!

화면의 왼쪽은 Navigator 라고 불린다.

오른쪽은 Utility pane 이라고 불린다.

그리고 기기를 정해서 어느 환경에서 실행될 것 인가를 골라야 한다.

LaunchScreen.storyboard를 들어간다.

처음 UI는 하나의 기기에만 잘 적용되게 할 것이다. 방향이나 기기 마다 제약이 다르다.

이미지 / 누르면 나타나는 것 두 개가 필요하다.




“+” 를 눌러서 “Button”을 검색 후 인터페이스에 옮겨 넣는다.
파란색 선으로 위치를 자세히 나타내준다!

“버튼”을 누르고 유틸리티에 가면 background 색상을 변경할 수 있다.

아예 인터페이스 배경 색상을 바꿀 수도 있다!

카드를 열면 이미지가 있고 흰색 배경으로 바뀌도록 하자!

Edit > Emoji&Symbol에 들어가서 이미지 대신 이모티콘으로 대신하자

class가 UI를 다 통제한다.

창을 두 개를 띄워서 인터페이스에서 ctrl + 드래그 해서 코드에 갖다놓으면 인스턴스를 생성할 수 있다.


var flipCount = 0 {

        // property observer

        didSet {

            flipCountLabel.text = "Flips : \(flipCount)"

        }

    }

flip count 추가해서 flipCountLabel 함수의 텍스트 print 문에 /(flipCount)를 넣어주면 뒤집는 만큼 숫자가 추가 된다!


Type을 Any에서 UIButton으로 바꿔주자.

// 함수이고 인스턴스의 이름 :은 타입을 말해줌

// 파라미터는 이름이 다 있어야 한다.

옵션키를 누르고 함수를 클릭하면 help가 뜬다



인터페이스에서 버튼을 우 클릭하면 disconnect 할 수 있다. 복붙했을 때 자주 발생하는 문제

connection : outlet은 instance variable property를 생성한다 / action은 method를 생성한다outlet collection은 Array!을 의미한다

could not insert new outlet connection 오류가 뜨면 프로젝트 껐다 키기


command 누르고 함수 누르면 새로운 창이 뜸

rename하면 전체에서 기존의 문자를 원하는 문자로 바꿔준다.


nil은 optional이 아니라는 것

cardButton이 아닌 것을 누르면 crash 발생



전체 코드는 다음과 같다.


//

//  ViewController.swift

//  stanford swift

//

//  Created by 이차민 on 11/11/2019.

//  Copyright © 2019 이차민. All rights reserved.

//


import UIKit


class ViewController: UIViewController {

    // initializer를 필요로 함 ( = 0 )

    // swift는 타입추론이 가능하다

    // 그래서 Int = 0 이라고 안적어도 된다.

    var flipCount = 0 {

        // property observer

        didSet {

            flipCountLabel.text = "Flips : \(flipCount)"

        }

    }

        

    

    // 초기화가 필요없음

    @IBOutlet weak var flipCountLabel: UILabel!

    

    // Array<UIButton>!

    @IBOutlet var cardButtons: [UIButton]!

    

    // string이 확실해서 array<String> 안써도 됨

    var emojiChoices = ["🎃","👻","🎃","👻"]

    

    @IBAction func touchCard(_ sender: UIButton) {

        flipCount += 1

        if let cardNumber = cardButtons.index(of: sender){

            flipCard(withEmoji: emojiChoices[cardNumber], on: sender)

        } else{

            print("Chosen card was not in cardButtons")

        }

        

    }

    func flipCard(withEmoji emoji : String, on button : UIButton) {

        print("flipCard(withEmoji: \(emoji)")   // \() sting이 들어갈 수 있음

        if button.currentTitle == emoji {

            button.setTitle("", for: UIControl.State.normal)

            button.backgroundColor =  colorLiteral(red: 0.9372549057, green: 0.3490196168, blue: 0.1921568662, alpha: 1)

        } else {

            button.setTitle(emoji, for: UIControl.State.normal)

            button.backgroundColor =  colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)

        }

    }


}




결과는 아래와 같다.

Flip도 세주고 뒤집었을 때 이미지가 등장한다. 




강의를 들으면서 적고/따라하다보니 정리가 난잡하다... 

코드도 지우고 새로 추가하는 부분들이 있어서 강의를 들으면서 천천히 따라하는 것이 제일 좋을 것 같다!


728x90
반응형