iOS 55

Firebase를 이용한 앱개발1: Segue설정

Firebase를 이용한 간단한 채팅 앱을 개발한다. 1. 앱의 홈 화면에는 앱의 이름이 출력되는데, 이때 이름은 한글자씩 애니매이션으로 출력됨. 2. 홈에서 register버튼을 누르면 신규 회원가입, Login버튼은 기존회원의 로그인 버튼으로 이동 3. Register 페이지와, Login 페이지에서 작업을 완료하고 버튼을 누르면 채팅 화면으로 이동 4. 채팅창은 TableView로 이루어져 있으며, 채팅을 입력할 때마다 TableViewCell이 추가됨. 5. 채팅을 입력하면서 서로 메세지를 주고 받는 것 확인. 6. 회원을 등록하고, 로그인하고, 메세지를 주고받기 위해서 Firebase 라이브러리를 dependency에 포함. 처음에 클론한 프로젝트 구조는 다음과 같다. 모델(Models), 뷰(..

multiplier

View 를 하나 추가하고, 초기 constraint와 화면은 다음과 같다. constraint 에서는 Top, Leading은 시작하는 좌표를 몇배로 늘릴 것인지를 의미한다. Leading의 시작하는 좌표가 0이라면 Multiplier를 몇배로 설정하더라도 0이라는 점에 유의하자. Bottom과 Trailing은 '끝나는 지점' 이기때문에 끝의 좌표는 이미 정해져있는 것이고, 오브젝트에 Multiplier를 몇배를 적용해야 끝나는 좌표가 되는지를 계산하는 것이기 때문에 나눗셈처럼 동작한다. Equal height, Equal width 에서 Multiplier는 어느 것이 다른것의 몇배의 크기인지를 나타낸다. 두개의 뷰의 constraint를 top, leading, bottom, traling을 20..

iOS/AutoLayout 2022.01.05

여러 오브젝트를 사용해서 AutoLayout 적용하기.

여러개 (2개 이상) 의 오브젝트를 통해서 오토레이아웃을 적용해보자. 두개의 오브젝트가 다음과 같이 있을 때, 파란색 뷰에 상하 좌우 20씩의 constraint를 주게되면 파란색 뷰의 Trailing은 노란색 뷰와의 간격이 20이 되고, 노란색 뷰는 자동적으로 파란색 뷰와 Leading constraint가 20이 된다. constraint를 설정할 때 중요한 것이 크기와 위치가 결정되어야 한다는 점인데, 여기서 두개의 뷰에 constraint를 설정해 주면, 위치는 결정되지만 크기가 결정되지 않기 때문이다. 파란색 뷰나 노란색 뷰 둘 중 하나의 width를 설정해주면 크기또한 결정할수 있게 된다. 두개의 뷰의 크기를 같게 하고 싶다면 commad를 사용하거나 드래그를 통해 두가지를 선택한 다음 Equ..

iOS/AutoLayout 2022.01.04

alignment

Add new alignment Constraints를 누르면 설정할 수 있으며 Horizontally In Container는 상위 뷰 기준으로 좌우 가운데 정렬을 하겠다는 의미이고, Vertically in Container는 상위 뷰 기준으로 위아래 가운데 정렬을 하겠다는 의미이다. 가운데 정렬만 설정해 주면 요소의 위치는 결정되지만 크기는 결정되지 않으므로 다음과 같이 빨간 선으로 에러가 발생한다. Leading/Trailing의 contraint를 설정해주거나, Bottom/Top 의 constraint를 정해주면 무조건 가운데 정렬이라는 것을 xCode가 알고 있기 때문에 크기를 결정할 수 있으며, 또는 constraint에서 고정적인 크기를 지정해주어도 된다.

iOS/AutoLayout 2022.01.04

iPhone_SafeArea

iPhone X 가 출시되면서, 휴대폰의 상태 표시 바와 제스처 기능을 위해서 SafeArea가 생겼다. File Instructor에서 SafeArea를 사용할지 말지를 결정할 수도 있다. SafeArea영역은 다음과 같으며, 이 영역을 벗어나서 기능을 추가하는 것은 권장되지 않는다. 애플 가이드라인에서도 SafeArea를 벗어나는 영역은 사용하지 않도록 권장되고 있다. 기존에 하던대로 constraint의 Top, Bottom, Leading, Trailing의 간격을 0으로 설정하면 SafeArea를 기준으로 하기 때문에 다음과 같이 나타난다. 어떤 이미지를 배경화면으로 설정하려고하거나, 배경화면의 색상을 지정하는 경우, SafeArea 때문에 위아래의 공간에 적용되지 않기 때문에 어색해 보인다. ..

iOS/AutoLayout 2022.01.04

constraint_1

command + shift + L으로 라이브러리를 연 후, view를 선택해 화면에 뷰를 놓을 수 있다. 이 뷰를 가지고 contraint에 대해서 공부해보자. 일단 뷰에 색깔을 넣어 구분해주었다. constraint는 이러한 요소 하나하나의 위, 아래, 왼쪽, 오른쪽 가격이 얼마나 되느냐를 나타내는 것이다. 요소를 선택한 후, 오른쪽 아래의 Add New Contraint버튼을 누르면 constraint를 설정할 수 있다. 간단하게 표시되어 있기 때문에 바로 어디에 대한 간격을 나타내는지를 인지 할 수 있다. contraint to margin은 margin에 대한 개념을 조금 더 공부한 후에 사용하기 위해서 체크하지 않았다.. margin을 체크하면 우리가 생각하는 것과는 다르게 표시될 수 있다. ..

iOS/AutoLayout 2022.01.04

segue 를 사용해서 또 다른 뷰를 나타내기

전에는 코드만을 사용해서 직접뷰를 호출해주었지만, 출력해야 하는 뷰가 많아지면 일일히 그렇게 해주기에는 부담이 될 것이다. 이를 위해서 애플에서 제공하는 segue를 사용한다. Calculate View Controller 에서 control(^)을 누른 채로 Result View Controller에 놓은후 마우스를 떼면 segue를 생성할 수 있다. 여기서는 Present Modally로 설정해 주었고, Attribute Instpector에서 위와같이 생성된 segue를 선택하면 Attribute Inspector에서 Identifier를 설정할 수 있다. 그러면 이제 Calculator Inspector에서 performSegue메서드를 사용하여 Segue를 사용할 수 있다. withIdentif..

iOS/StoryBoard 2022.01.02

새로운 뷰를 나타내기, 값 전달

해당화면에서 CALCULATE 버튼을 누르면 키와 몸무게에 따른 새로운 화면으로 넘어가도록 하고싶다. 먼저 새로운 뷰는 다음과 같이 라이브러리에서 View Controller를 선택해 생성할 수 있다. 지금은 바로 사용하지는 않지만, 새로운 뷰를 생성하려면 어차피 알아두어야 한다. controller 폴더에 새로운 뷰를 위한 swift파일을 추가하고, 빨간화면에 계산된 bmi가 계산되도록 다음과 같이 작성하였다. viewDidLoad 함수는 뷰가 처음 보여졌을 때 호출되는 함수이다. label을 하나 만들고, .frame을 통해서 label의 크기를 설정할 수 있다. (0, 0)의 너비 100, 높이 50으로 설정하였다. 그러면 계산된 bmi 값을 어떻게 SecondViewController에 전달할 수..

iOS/StoryBoard 2022.01.02

unrecognized selector sent to instance 에러

BMI 앱에서 Height Slider Bar를 IBAction으로 연결하고, 바를 움직이자 다음과 같은 에러가 발생하였다. 꽤 오래 헤맸으나 결론은 @IBAction으로 만들어준 또 다른 함수를 리팩토링 옵션으로 삭제해주지 않고 그저 코드만 삭제 해준 바람에 Slider Bar는 아직 해당 함수와 연결된 것으로 설정되어 잇으나, 코드상에는 해당함수가 없었기 때문이였다. 사용하지 않는 heightSlider 뷰 컨트롤러와의 이벤트 연결을 끊어주니 제대로 동작하였다.

iOS/Errors 2022.01.01