Button은 딱 텍스트영역만 Tappable 하다. (노란색은 클릭영역이 아님) 이미지를 넣어도 마찬가지로 딱 이미지 영역만 Tappable하다. (노란색은 클릭영역이 아님) UIKit과 달리 SwiftUI에서는 버튼을 만들기 위해서 Label이라고 불리는 다른 뷰를 꼭 줘야한다.그래서 Label 영역만 tappable하게 디자인되었나보다. (추측) 그러면 Label말고 다른 영역도 Tappable하게 하려면 어떻게 해야할까?! [1] Button말고 Label에 frame을 주기 Label영역만 Tappable하니까 Label영역을 버튼사이즈로 해주면 되는 방법이다. [2] 버튼 아닌 뷰를 만든 후, onTapGesture 사용SwiftUI의 버튼이 Label 영역만 Tappable하게 디자인 되었다..
첫번째 사진의 modifier 순서는 background -> frame 입니다. 두번째 사진의 modifier 순서는 frame -> background 입니다. 결과가 다른 것을 볼 수있죠?! 그 이유는 무엇일까요-?! SwiftUI에서는 View에 modifier를 적용할때마다 새로운 view를 만들게 되는 것임을 기억해야합니다 (단지 존재하는 view의 속성을 바꾸는 게 아니라 새로운 view를 리턴하게 되는 것-!) 그래서 첫번째 사진은 아래와 같은 이유로 저렇게 그려졌고 두번째 사진은 아래와 같은 이유로 저렇게 그려졌습니다. 헷갈리지 않도록 frame modifier를 첫번째로 위치시켜야겠습니다...! 그리고 개발하면서 frame말고도 순서바꾸니까 원하는대로 동작했던 것이 또 있었는데 (잘 기..
[1] 문제 폰트 파일 Target Membership 설정도 해줬고 맥 OS > info.plist에 추가해야하는 값들도 추가했다. 근데 iOS에서는 커스텀 폰트가 잘먹는데, macOS에서만 안먹는 것이 아닌가...! [2] 해결 코드로는 ATSApplicationFontsPath . 맥 OS에서 커스텀 폰트를 쓰려면, info.plist에 ATSApplicationFontsPath이라는 키값을 추가해줘야한다. ATSApplicationFontsPath는 폰트파일이 어디 위치했는지 알려주는 역할을 한다. value값으로는 폰트파일의 location이나 폰트파일이 속한 directory를 알려주면 된다. (https://developer.apple.com/library/archive/documentati..
Future는 Publisher 프로토콜 을 conform하고 있다. Swift에서 asynchronous 프로그래밍을 위해 callback기반 completion handler를 사용했는데, (Rx안쓴다면) 이제 Future를 사용하면 된다..! Future는 말그대로 아직 일어나지 않은 미래를 의미한다(??) Future는 Output과 Error를 가지고 있고 (Publisher를 conform하니까 당연쓰) final public class Future : Publisher where Failure : Error Promise 클로져가 있는데, Promise 클로져는 이렇게 생겼다. [1] 기본 사용법 let future = Future { promise in promise(.success(1))..
[1] @State 이니셜라이저에서 state를 초기화해주려면 underscore를 써서 접근해야한다. (출처) struct SomeView: View { @State var selectedIndex: Int init() { let selectedInde = // do something _selectedIndex = State(initialValue: selectedIndex) } var body: some View { ... } } [2] @Binding 바인딩도 마친가지이다. 이니셜라이저에서는 underscore를 써서 접근해야한다 struct SomeView: View { @Binding var someValue: Int init(someValue: Binding) { _someValue = som..
[1] 다트의 함수 형태 리턴 타입과 파라미터 타입을 명시해줄 수도 생략해줄 수 도 있다. return을 => 로 대체할 수도 있다. bool isFood(String name) { return true; } isFood2(name) { return true; } isFood3(name) => true; return 타입을 생략한 경우 알아서 유추되지만, 파라미터 타입을 생략하면 dynamic 타입으로 되는 것을 알 수 있다. (dynamic은 어떤 타입이든 다 들어올 수 있음) [2] 다트의 파라미터 첫번째, 필수 O + 이름없는 parameter // required + not named parameter bool isFood(String name) { return true; } isFood("고기"..
Flutter 앱 자동배포 구축 - iOS 편 에서 이어집니다. Getting started with fastlane for Android 문서를 참고해주세요 [1] fastlane init 안드로이드 폴더로 이동해서 아래 명령어를 실행시켜주세요 fastlane init [2] Package Name Package Name을 물어보는데 대답해줍니다. app/build.gradle의 applicationId를 알려주면 됩니다. [3] json secret file 그 다음 json secret file의 경로를 물어보네요 json secret file을 만들어서 path를 알려줘야해요!+! Getting started with fastlane for Android 문서의 Collect your Google..
얼마전 간단한 플러터앱을 만들어서 앱스토어와 구글 플레이스토어에 배포를 해보았다. (플러터 앱 배포 회고) 근데 버그 발견해서 새 버전 낼때 때마다 iOS, 안드로이드 각각 신경써야하고 AppStoreConnet와 구글플레이스토어 콘솔 각각 들어가야하고... 두개를 다하려니 너무 귀찮다. 😭 (iOS 앱 출시 준비하기 , Android 앱 출시 준비하기 ) 그러다가 메마른 땅 촉촉한 단비와도 같은 웹 개발자의 Travis CI 기반 Flutter 앱 지속적 빌드 및 배포 환경 구축기 라는 글을 만나게 되는데... 따라해보겠습니다! (다 해보고 나니 플러터 뿐만아니라 iOS 네이티브앱에 그대로 해도 되겠더라구요) [1] Fastlane 설치하기 fastlane docs 를 참고해서 설치해줄게요 sudo g..
Get the Flutter SDK 문서 를 참고해주세요여기 따라하다가 쌍따옴표 이슈 를 만난 김에 정리합니다-!! 1) zip 다운받기 다운받으면 flutter라는 폴더로 압축이 풀립니다. 2) flutter 폴더를 원하는 위치로 이동하기 어디에 둘까하다가 홈에가서 development 폴더하나 만들고 여기에 넣어둠 3) Path 추가하기맥 OS 카탈리나부터 터미널이 bash가 아니라 zsh로 바뀌었기때문에bash_profile에 Path 추가해줘도 터미널에서 flutter 명령을 인식 못합니다. 그러니까 풀어서 설명하면..!아래 두가지 방법 중 하나로, bash_profile을 열어서open ~/.bash_profilevi .bash_profile 아래 라인을 추가해주고 저장해줘도 export PAT..
- Total
- Today
- Yesterday
- Flutter 로딩
- 플러터 얼럿
- Flutter Spacer
- METAL
- SerializerMethodField
- flutter dynamic link
- cocoapod
- ribs
- Python Type Hint
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- Sketch 누끼
- flutter build mode
- Flutter Clipboard
- Flutter getter setter
- Django Heroku Scheduler
- Django FCM
- 장고 URL querystring
- 플러터 싱글톤
- Watch App for iOS App vs Watch App
- drf custom error
- Dart Factory
- 구글 Geocoding API
- ipad multitasking
- flutter deep link
- DRF APIException
- flutter 앱 출시
- github actions
- PencilKit
- Flutter Text Gradient
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |