개발
-
expandable + dynamic height tableview cell 구현하기개발/Swift 2021. 9. 2. 18:24
데이터 값에 따라 유동적인 높이를 가진 Tableview를 구현 해야하고 그리고 해당 Tableview는 접기/펼치기 기능이 들어 있어야 할경우의 예시입니다. 우선 Tableview의 기본적인 구현 이 되어있다는 가정하에 진행합니다. 접기 펼치기 기능은 단순히 Row의(cell) 높이를 바꿔 주면 됩니다. heightForRowAt 함수를 통해 유동적으로 cell의 높이를 지정 해주면 됩니다. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { print("heightForRowAt \(indexPath)") if helpViewModel.isSelectedCell(indexPath: index..
-
Flutter camera ios 권한 요청, 처리 하기개발/flutter 2021. 8. 25. 16:16
권한 요청에대한 기능을 수행하기 위해서 permission_handler 플러그인을 설치해야 합니다. 프로젝트의 다른 plugin 버전 때문에 4.x 버전을 사용했습니다. permission_handler: ^4.4.0+hotfix.4 해당 플러그인을 사용해 카메라 뿐만 아니라 다양한 디바이스에 권한을 요청, 관리할수 있습니다. 우선 ios 에서 podfile 에 세팅을 해줘야하는데 camera 의 경우 이렇게 해주면 됩니다. post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) ## dart: PermissionGroup.camera 'PE..
-
[Flutter기초] Navigator push/pop 과 페이지간 값 리턴하기개발/flutter 2021. 8. 8. 17:30
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com 이 화면에서 다른 화면으로 전환을 하고싶을때 사용할수 있는 다양한 방식이있다. Tabbar을 사용할수도 있고 상태를 바꿔서(Stateful) 화면을 바꿀수 있지만 가장 간단하고 많이쓰이는것은 Navigator를 사용하는것이다. Navigator - push / pop 을 사용하여 새로운 페이지를 위에 얹거나 뺄수있다. 그럼..
-
Realm swift struct 타입, List타입 수정 하는법개발/Swift 2021. 8. 3. 17:46
내부 저장소에 리스트를 저장해야할 일이생겼다. moduleList 라는 [ModuleModel] 배열을 저장하고 꺼내 쓰고 수정하는것이 목적이다. 우선 ModuleModel 은 struct타입이다. struct ModuleModel { let id: String! let title: String! } struct ModuleModel { let id: String! let title: String! } struct은 사실 realm에 넣을수 없다. Object 타입만 사용 가능하다. 대신에 비슷한 Object 클래스를 만들어준후 넣어줄수 있다. 그리고 struct가 필요한 상황에 타입을 바꿔주는 방법으로 구현한다. class RealmModuleModel : Object { @objc dynamic va..
-
[Flutter basic] stateless widget 과 stateful 위젯 사용법개발/flutter 2021. 7. 24. 15:07
지금 까지 Flutter 를 코드를 짤때 MyHomePage라는 class 안에서 코드를 작성 했었다. 그러나 실제로 사용할 앱을 만들때는 이것보다는 훨씬더 복잡하고 많은 코드가 필요할 것이다. 그러면 코드의 길이가 무수히 길어질 것이기 때문에 class를 분리한 후에 child: 에 넣어준다. 예를들어 page 별로 class 를 분리할수도 있고 한 page의 특정 부분을 따로 class를 분리 할수도 있다. 나의 경우 이런경우 class를 분리하여 구현한다. 1. 페이지 넘어가는 경우 2. 특정 UI를 재 사용 할 경우 3. 복잡한 기능이 들어간 경우 4. 기타 등등... 위의 유튜브 UI 를 보면 영상 / 타이틀&설명 / 다른영상 리스트 / 댓글리스트 이렇게 나뉠수 있을것이고 댓글리스트 에서도 댓글..
-
[Flutter basic] Listview 상품 리스트 구현하기 예제(column,row,container)개발/flutter 2021. 7. 11. 13:31
이번에 구현 해보려 하는 UI 는 위와 같은 상품 리스트 이다. 다소 복잡한 페이징은(오른쪽위 페이지 넘기는거) 제외하고 상품사진, 타이틀, Descripton으로 구성관 리스트를 구현 해보고자 한다. 보통 첫번째로 해야할 일은 모델링을 하는것이다. 그러나 API를 제공받고 있는 상황은 아니므로 모델링한 데이터들은 공유하도록 하겠다. class ProductModel { const ProductModel(this.imageUrl, this.title, this.desc1, this.desc2); final String imageUrl; final String title; final String desc1; final String desc2; } const productList = [ ProductMode..
-
[Flutter basic] Listview 를 사용해 원하는 UI 구현하기개발/flutter 2021. 7. 3. 22:08
Listview 는 아주 많이 쓰이는 기능이다. 아무 앱이나 자주 가는 사이트들을 보면 알수있듯이 리스트는 아주 흔하게 볼수있는 UI 다. 예를 들어 게시판이나 유튜브 영상 리스트, 검색 결과 리스트 등등 이있다. 리스트는 보통 서버에서 받은 데이터들을 보여주는 형식으로 자주 쓰인다. 따라서 갯수가 고정적이지 않고 동적으로 변하는 경우도 많이 있다. 그리고 여러개일경우 핸드폰의 크기를 벗어나기 때문에 scroll 기능이 필요한경우가 있고 리스트의 형태가 가로이거나 세로 일경우도 있다. 이모든 기능들을 Listview 하나로만 구현이 가능하므로 ListView는 매우 필수적인 기능이라 볼수있다. 보통의 경우 서버 데이터를 보여주는 경우가 많으므로 ListView.builder() 를 사용한다. 이거만 사용..
-
[Flutter basic] Container/Row/Column 사용해 구글 검색 페이지 구현하기 튜토리얼개발/flutter 2021. 6. 27. 18:45
지금까지 배운 Container 와 Row/Column을 사용해 구글의 메인화면인 검색 페이지를 구현 해보려한다. 화면을 구현할때 우선 어떻게 그려낼지 생각해보고 작업을 진행하는게 좋다. 해당 UI는 크게 세개로 나뉘어 진다. 구글로고 / 입력창 / 텍스트 1. 이 세개는 세로로 그려져 있기 때문에 Column 을 사용하는것이 좋겠다. 그리고 정렬을 가운데 정렬을 하면 될것이다. 2. 검색창에는 돋보기 모양의 이미지가 있음을 확인 할수있다. 검색창을 크게 Container로 두고 그 안에 child로 이미지를 넣은후 왼쪽으로 배치하면 될것이다. 3. 그리고 맨 아래에 있는 텍스트(google 제공 서비스: English ) 는 텍스트와 버튼 으로 나뉘어진다 세로로 그리면 되므로 Row를 활용 할수있을것이..