개발/Swift
-
Tableview와 스크롤을 다루는 방법개발/Swift 2023. 5. 31. 18:17
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Swift Modern Collection View & MVVM 패턴 가이드 | 덤벨로퍼 - 인프런덤벨로퍼 | MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이www.inflearn.com Tableview의 길이가 길어져서 디바이스의 높이보다 길어지는순간스크롤을 사용할수 있고 그덕에 긴 컨텐츠를 한 페이지에 보여줄수 있다.그래서 table view의 사용목적 자체가 스크롤과 연관이 깊다.이로 인해 스크롤과 테이블뷰 간의 관계를 잘..
-
Swift Bottom Sheet 바텀시트 구현하는 방법 + 동적 높이 할당개발/Swift 2023. 5. 24. 17:02
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com 보통 navigation 의 present 함수를 통해 버텀 시트를 구현 하면 좋지만 해당하는 높이가 아닌 낮은 높이의 바텀시트를 구현 하기 위해서는 결국 Custom 하게 만들어야 한다. 그러려면 결국 ViewController 안에 배경을 흐릿하게 하고 안에 Content View 를 넣어주어 해당 View를 Botto..
-
Swift Tooltip 구현하는 방법개발/Swift 2023. 5. 21. 15:59
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com 이런거를 구현해야했다. 텍스트, 둥근 오렌지색 배경은 문제 없이 구현 가능하나 문제는 밑에 달린 뾰족한 부분(Tip) 을 직접 그려내야 한다는것이다. 그리는 방법은 우선 4개의 점을 지정해줘서 점을 이은 4각형의 (정확히는 마름모) 레이어를 만들어 배경색을 넣어주고 해당 View 레이어에 넣어줘야 한다. 4개의 지점을 지정..
-
확장 축소 가능한 동적 높이 TableView 구현 하기개발/Swift 2023. 4. 16. 13:46
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com 동적 높이 셀 동적 높이 테이블뷰 확장 축소 가능 테이블뷰 Table view높이 구하기 테이블뷰의 높이가 컨텐츠에따라 유동적으로 설정이 되려면 높이를 지정해주지 않고 제약조건을 잘 설정 해주면 된다. titleLabel.snp.makeConstraints { make in make.top.equalTo(9) make.le..
-
Relay를 사용하면 무조건 메인스레드 일까개발/Swift 2023. 4. 2. 15:03
Relay나 Driver를 사용하면 에러나 complete이 없기때문에 UI 작업에 적합하다 알고있었기에 아무 거리낌없이 사용중이었다. var error: PublishRelay { get } 뷰 모델에서 에러가 발생하는경우 위 Relay에 에러를 accept 해서 뷰컨트롤러에 전달한다. 뷰컨트롤러는 해당 error 를 바인딩 하고 있다가 에러가 떨어지면 모달을 띄우는 역할을 하고있다. 네트워킹의 경우 background 스레드를 사용하고있다. 네트워킹에서 에러가 발생하는 경우 //Background Thread self.error.accept(error) 에러를 방출 시켜주었다. 이때 뷰컨트롤러에서 crash가 발생했다. modal을 띄우는것은 메인스레드를 쓰라는 것이다. viewModel.error ..
-
Rxswift 네트워크 에러 핸들링개발/Swift 2023. 4. 2. 15:00
public func checkSignUpID(loginID: String) -> Observable 위 함수는 네트워킹을 통해 Bool 타입을 Obseravle로 감싸 리턴해준다. 해당 타입은 true, false ,error 를 Obervable에 감싸 리턴한다. 요구 조건은 다음과 같다. 에러가 발생해도 VC의 구독이 끊기면 안된다. false와 error 모두 다른 핸들링이 필요하다. 일반적으로 사용하면 checkSignUpID() 에서 에러 발생시 구독이 끊긴다. 그러면 다시 요청했을때 아무런 이벤트가 발생 하지 않는다 구독이 끊기지 않게 하기 위해서 catch를 사용해 다시 Observable을 리턴해줘여한다. let subscribe = validSignUpID(loginID: loginID..
-
Rx + TableView(CollectionView) 바인딩 안되는 오류 해결방법개발/Swift 2023. 3. 21. 18:25
1. TableView에서 발생 (제약조건) dataSubject.bind(to: tableView.rx.items) { tableView, row, element in print("Test") return UITableViewCell() }.disposed(by: disposeBag) dataSubjecgt에 값을 아무리 집어 넣어도 위의 셀을 리턴하는 클로저가 호출이 계속안됨 tableView.register(IDIntergrationAuthCell.self, forCellReuseIdentifier: IDIntergrationAuthCell.id) tableView.rx.setDelegate(self).disposed(by: disposeBag) 레지스터와 delegate 모두 빠지지 않은 상태 (..
-
[Swift] 직접 UITableView를 구현하기개발/Swift 2023. 1. 12. 17:04
스크롤 구현 방식 스크롤을 구현하기 위해 UIstackView를 통해 UI들을 집어넣고 UIPanGesture를 통해 터치이벤트를 받아 스크롤을 구현 했습니다. for i in 1.. UIImageView? { guard let image = UIImage(named: "image\\(index)") else {return nil} let imageView = UIImageView(image: image) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.heightAnchor.constraint(equalToConstant: cellHeight).isActive = true return imageView } init에서 초기 1..