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] 단축어 만들고 싶은 이유 XCode에서 빌드를 돌리면 ~/Library/Developer/Xcode/DerivedData 에 빌드결과를 저장합니다. (xcode build cache 라고 생각하면 됩니다) 컴파일이 안될 경우, 보통 3단계를 합니다. 1) Clean build Command + Shift + K 를 눌러서 클린빌드합니다. DerivedData > 프로젝트 > Build 안의 폴더를 깨끗하게 비워줍니다. 클린빌드 하기 전, 클린빌드 한 후 2) Clean build folder 클린빌드를 했는데도 컴파일이 안된다!! 할때, 2번을 하게 됩니다. Command + Shift + Option + K 누르면 됩니다. Build 폴더를 아예 지워버립니다. 클린 빌드 폴더 하기 전, 클린 빌..
[1] 전처리문이란전처리문(PREPROCESSOR STATEMENT)은 말그대로 컴파일 이전에 미리 처리되는 문장을 의미합니다. 전처리문은 #로 시작합니다. 종류도 여러가지가 있는데요, 상수(constant)를 정의하는 전처리문#define PI 3.14 파일을 포함시키는 전처리문#include 파일이름 참거짓을 판별해서 어떤 코드를 컴파일 할지말지 결정하는 전처리문 #if 조건문 source code.. #endif등등이 있습니다. 참고로 #define이랑 #include는 스위프트에서 못써요-!! 위의 예제는 C에서 주로 쓰이는 것 가져왔습니다. [2] Swift에서 전처리문을 쓴 경우 iOS 개발하다가 쓰는 경우는보통 release와 debug를 구분하거나 #if DEBUG print("DEBUG에..
[WidgetKit] 위젯만들기 포스팅에서는 StaticConfiguration을 사용하였는데요, 위의 움짤처럼 Edit Widget 기능을 추가해주기 위해 IntentConfiguration을 사용해보겠습니다. 참고로 Making a Configurable Widget 문서를 보고 알게 되었는데, 저렇게 Editable한 위젯을 Configurable Widget이라고 부릅니다-! 우선 Intent가 필요합니다. Widget extension 타겟으로 SiriKit Intent Definition File을 추가해주세요 (저는 파일이름 WidgetIntents로 해줬습니다.) Intent 파일을 클릭하고 + 눌러서 New Intent 해주세요 저는 PRList라고 이름을 지었습니다. Intent 카테고..
[1] Black Screen이 되어버렸을때 접근성 테스트하다가 소리는 나는데, 화면이 black screen으로 되어버린 적이 있었습니다. 그럴때는 손가락 세개로 홈 스크린을 빠르게 세번 누르면 화면이 다시 등장합니다.. (quickly triple-tap the screen) 출처: discussions.apple.com/thread/250398181 Accessibility dark screen - Apple Community I’m working with the accessibility voice over. I haven’t had this problem previously. When I turn voice over in, the home screen is dark even when I push ..
- Total
- Today
- Yesterday
- Flutter getter setter
- Sketch 누끼
- Flutter Text Gradient
- 플러터 얼럿
- github actions
- cocoapod
- Watch App for iOS App vs Watch App
- drf custom error
- flutter deep link
- 플러터 싱글톤
- Dart Factory
- 장고 Custom Management Command
- Flutter 로딩
- ipad multitasking
- Django Heroku Scheduler
- Flutter Spacer
- 구글 Geocoding API
- flutter dynamic link
- Django FCM
- Flutter Clipboard
- 장고 URL querystring
- ribs
- DRF APIException
- SerializerMethodField
- Python Type Hint
- PencilKit
- flutter 앱 출시
- Django Firebase Cloud Messaging
- flutter build mode
- METAL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |