iOS 70

[iOS] 앱 실행시 조건에 따라 다른 viewController로

구글 로그인을 구현하다가 로그아웃을 하지 않으면 메인 페이지로, 로그인이 되어있지 않은 상태면 로그인 페이지로 가도록 구현하는데 고민을 했습니다. 다음 포스팅을 참조해서 SceneDelegate의 scene에 구현하니 작동이 잘 되었습니다. [iOS] StoryBoard를 쓰지 않고 코드로 작성하기 아래 구현은 google 로그인을 조건으로 작성한 코드이고 이를 응용하면 상황에 따른 시작 지점을 변경해줄 수 있을듯 합니다. // SceneDelegate class func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // 새로 작성해준 코..

iOS/UIKit 2022.03.02

[iOS] TableView 스크롤위치 변경(하단으로 스크롤)

채팅 앱을 tableview로 구현하는데 어떻게 하면 TableView를 하단으로 내릴 수 있을까 고민했습니다. 방법을 찾았는데 scrollToRow를 이용하는 방법이 있었습니다. 애플 공식 문서 저는 talks 라는 배열에 cell의 정보를 담아두었으므로 row에는 cell의 개수-1 값을 주어 마지막 cell의 row를 알려주었고 section은 하나만 사용해서 0을 사용했습니다. 그리고 해당 cell의 아래로 가기 위해 .bottom을 할당했습니다. animation은 true이면 주르륵 내려가는데 false로 주어 채팅방에 들어갔을 때 바로 최하단이 보이도록 하였습니다. scrollToRow let index = IndexPath(row: self.talks.count - 1, section: 0..

iOS/UIKit 2022.03.02

[iOS] Label에 Padding 주기(StoryBoard), Label에 cornerRadius 주기

Label에 padding 주기 라벨에 패딩을 쉽게 주는 방법을 알아보겠습니다. 사실 저장해두고 써먹으려는... (근데 왜 CSS 처럼 padding이나 margin이 없을까...?) 암튼 View 안에 label을 넣어 padding을 주는 방법도 있다고 하는데 여기서는 @IBDesignable을 이용하도록 하겠습니다. @IBDesignable을 설정해주면 스토리보드에서 클릭으로 설정이 가능한 창이 생성됩니다. 사용 방법은 간단합니다. 1. Swift 파일을 만든다. 2. Label의 class에 만든 Swift의 class를 할당해준다. 3. 속성 인스펙터에 새로운 창이 생겼으니 padding을 조절하면 된다! import Foundation import UIKit @IBDesignable class..

iOS/UIKit 2022.03.02

[iOS] Transform을 이용해 KeyBoard 이벤트 처리

키보드가 필요한 작업을 하려고 하니 TextField가 가려지는 현상이 발생했습니다. 아마 많은 분들이 같은 문제를 겪고 계실거라 생각되는데 한번 키보드 높이 만큼 textfield를 이동시켜 가려지지 않게 하고 키보드가 내려가면 다시 원래 위치로 돌아가는 이벤트를 처리해 보겠습니다. 1. 키보드 상승 및 하강을 보고 이벤트를 실행시키기 위해 옵저거 달기 먼저 저는 필요한 화면의 viewWillAppear에 선언해 주었습니다. (메모리를 위해 viewWillDisappear에서 옵저버를 해제해 주셔야 합니다.) override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // 키보드가 나올때 observing Notific..

iOS/UIKit 2022.03.02

[iOS-Error] The ios simulator deployment~~ 에러

에러명 the ios simulator deployment target 'iphoneos_deployment_target' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.2.99. 다음의 에러가 발생했는데 지원 버전과 설정 버전이 맞지 않아 발생하는 에러라고 합니다. 해결법 pod 파일에 가서 다음을 추가하시고 install 하니 해결되었습니다. 붙이는 위치는 end 바로 위라고 생각하시면 됩니다. post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |conf..

iOS/Errors 2022.02.28

[iOS-Error] Pod과 swift package manager를 동시 사용했을때

괜찮을거라 생각했는데 pod과 package manager로 각각 다른 라이브러리를 설치하니 오류가 납니다.. (어찌보면 당연한건가?) 암튼 이럴때 해결 방법을 알아내서 정리해 보려 합니다. Xcode -> preference -> Loccations -> 화살표 클릭 DrivedData 에서 프로젝트 관련 파일 모두 삭제(저는 두가지를 사용했더니 폴더가 두개 있었습니다.) 프로젝트폴더 -> pod.lock, pods 폴더 삭제 콘솔에서 -> pod install 하니 다시 정상 작동 되었습니다.

iOS/Errors 2022.02.28

[iOS] plist 데이터 불러와서 사용하기

iOS에는 plist라는 독특한 파일이 있습니다. 사실 JSON과 비슷하다고 생각되는 파일입니다. 이 파일을 읽어와 사용하는 방법을 다뤄보겠습니다. 일단 과정은 URLSession으로 json을 받아와 decoding 하는 과정과 유사합니다. 1. plist 구조의 struct를 만든다. 2. Plist 파일의 url을 가져온다. 3. Plist 파일을 Data화 한다. 4. Data를 decoding 한다. 1. struct 만들기 plist파일을 보고 struct를 만듭니다. // 예시 struct ex { let a: String let b: String let c: Bool } 나머지 과정은 한번에 진행하도록 하겠습니다. 2. Plist 파일의 url을 가져온다. 3. Plist 파일을 Data화..

iOS/Swift 2022.02.24

[iOS] collectionView 헤더(Header) 커스텀 및 사용

collectionView에서 cell은 등록하고 dequeueReusableCell 메서드로 불러와 사용했습니다. 하지만 Header는 비슷하지만 조금 다른 방식을 사용해 정리해 보려 합니다. 먼저 헤더는 UICollectionReusableView을 준수합니다. cell -> UICollectionViewCell와 다름 Header -> UICollectionReusableView 이후 헤더를 커스텀하는 방식은 기존cell처럼 하시면 됩니다. 이제 헤더를 collectionView에 register하고 불러와 사용해 보겠습니다. register collectionView.register( "헤더class".self, // 이 부분으로 header임을 구분할 수 있다. forSupplementaryVi..

iOS/UIKit 2022.02.22

[iOS] collectionView 메서드, 프로퍼티 일부 정리

추후 업데이트 예정 다른 포스팅과 내용 중복 가능 collectionView 설정 // collectionView 선언(@IBOulet이 아닌 code) private lazy var collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal // 스크롤 방향 let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionView.delegate = self collectionView.dataSource = self collectionView.isPaging..

iOS/UIKit 2022.02.22

[iOS] tableView의 메서드, 프로퍼티 일부 정리

추후 업데이트 예정 TableViewCell 관련 // cell class에 설정 // cell의 오른쪽에 화살표 생긴다. (옵션에 따라 다름) accessoryType = .disclosureIndicator // cell을 선택해도 회색이 되지 않는다. selectionStyle = .none Section 관련 메서드 // 섹션의 수 override func numberOfSections(in tableView: UITableView) -> Int { return "section의 수" } // 섹션당 row의 갯수 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // 0부터 시..

iOS/UIKit 2022.02.22