저번에는 간단하게 swift언어에 대해 알아봤는데 이번에는 간단한 앱을 만들어보면서 xcode에서 어떻게 앱을 만들 수 있는지 적어보려고 한다
swift어려운 문법은 다음 블로그에 꼭 정의하는걸로 ㅋ
UIKIT는 간단하게 사용자 인터페이스를 구현하는데 있어 필요한 녀석들을 모아둔 프레임워크이다
여기서 UIKIT를 모아두고 다른 다양한 프레임워크들을 모아둔 굉장한 녀석이 있다!!
사진에서 보다시피 Uikit, Foundation등 왠만한게 다 모여 있다..ㅎㄷㄷ
자세한 설명을 찾아보고 싶어 위키백과에 검색을 해보니
아이폰,아이패드 및 아이팟 터치용 API이다. 애플이 개발하여 개발자들에게 제공해준다. 그래픽사용자 인테페이스를 구현하는, 이벤투-구동(event-driven)기법을 쓰는 아이폰 및 아이팟 터치용 응용 소프투웨어는 보통 코코아 터치 계층에 기반하여 작성된다
ViewController도 결국 화면 관리랑 연결이 되어있던 녀석이다
UIView 화면의 직사각형영역에 대한 내용을 관리하는 개체.
문자나 이미지등을 갖는 것이 가능하며 대부분의 UIComponent들의 부모 컴포넌트이다
모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다
즉, 한 화면을 구성하는 하나의 단위라고 생각하려고 한다
이거는 보자마자 이해한 몇 안되는 기능이었는데 간단하게 말하면
아이폰10, 아이폰se, 아이폰 프로에서 모두 해상도등을 통일시키려고 사용하는 기능이다
세로,가로 크기가 폰이나 태블릿 마다 조금씩 다르기 때문에 통일하는게 필요하긴 하다.
IBOutlet과 IBAction은 이 앱을 만들면서 적어보려 한다
간단하게 명언 생성 버튼을 클릭하면 미리 저장된 4개의 명언이 랜던하게 나오는 앱이다.
스토리 보드를 어떻게 연결했는지와 코드구현애 대해서 적어보려고 한다
Constraint는 제약조건인데 다른 ios기기에서도 적용되게끔 제약을 걸어주는것이다
배경화면에 대한 제약인데 패딩 제약을 위 왼쪽 오른쪽을 20씩 걸어놨다
추가로 Constain to margins는 기본 마진값을 포함하면서 계산해버리기 때문에 해제하는게 더 내가 원하는 위치로 지정할 수 있다
이런방식으로 버튼도 그리고 위에 '명언생성기'라는 라벨도 Constraint와 align을 지정해준다
그 다음에 이 스토리보드에서 만든 녀석을 내가 코드로 이벤트 처리를 해주기 위해서는 연결해주는게 꼭 필요하다!!!
상단에서 위아래화살표 되어있는 부분 바로 옆에 작대기 여러개 되어있는 녀석을 클릭하고 assistant를 누르면 viewController와 연결된 컨트롤러가 나타난다!!
그리고 드래그해서 연결하면 네임과 파라미터의 타입등을 결정해주면 된다
연결하고 난 뒤 모습이다
코드를 하나씩 한번 봐보자
**추가로 Quote라는 구조체 파일을 따로 만들어서 ViewController에서 보기 편하게 만들었다
import Foundation
struct Qutoe {
let contents: String
let name: String
}
@IBOutlet weak var quoteLabel: UILabel!
스토리보드의 라벨을 연결하고 name을 quoteLabel로 지정했다
weak라는 애가 있는데 이거는 메모리를 영구저장하는게 아닌 일시저장하겠다는 뜻이다.
영구저장은 strong이다.
let quotes = [ ... ]
quotes라는 배열에 Qutoe구조체 인스턴스를 총 4개 넣었다
여기서 랜덤하게 배열 인덱스를 지정해서 화면에 나오게 할 예정이다
@IBAction func tapQuoteGeneratorButton(_, sender: Any){
let random = Int(arc4random_uniform(4))
let quote = quotes[random]
self.quotoeLabel.text = quote.contents
self.nameLabel.text = quote.name
}
이건 명언생성 이라는 Button을 연결한것이다.
누르고 손가락을 땔때마다 안에 함수 내용이 실행이 된다
Int(arc4random_uniform(4))
0-4사이의 난수를 랜덤하게 발생시킨다
이걸 통해서 랜덤한 Quote값을 각 Label에 넣어줌으로써 화면에 보여준다!
생각보다 쉬워서 놀랐고 맥북에어로 하고있어서 그런지 화면 작아서 영상을 한 화면에 같이 틀어놓는건 불가능이네ㅜㅜㅋㅋㅋ
병원과 매칭해서 채팅할 수 있는 어플을 만들고 싶은데 그 어플을 만드는데 있어 한발짝 크게 다가간 느낌이 들었다