일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- SWIFT
- Protocol
- swiftUI
- collectionview
- Observable
- uiscrollview
- rxswift
- ios
- Xcode
- uitableview
- UICollectionView
- tableView
- RxCocoa
- map
- 리펙토링
- 클린 코드
- 리팩토링
- 애니메이션
- clean architecture
- MVVM
- swift documentation
- Human interface guide
- combine
- Clean Code
- ribs
- HIG
- Refactoring
- UITextView
- 스위프트
- Today
- Total
목록iOS 응용 (swift) (722)
김종권의 iOS 앱 개발 알아가기
뷰 속성 순서의 중요성SwiftUI에서는 뷰를 선언하고 속성을 선언적으로 넣어주어서 뷰를 완성해나가는데, 속성을 넣을때 순서도 중요ex) 아래 firstView, secondView는 frame(minHeight:)의 선언 순서만 다르고 나머지는 동일한 코드지만 완전히 다른 뷰가 보여짐@ViewBuilderprivate var firstView: some View { VStack(spacing: 0) { Color.clear .frame(width: 287, height: 0) Text("테스트 문구") } .frame(minHeight: 105) // frame(minHeight:) 순서 위치만 다른데, 아래처럼 두 뷰를 VSt..
투명 뷰로 감싸고 터치 이벤트 받는 방법투명 뷰로 감싸는 경우?뷰를 구성하고 특정 영역을 터치 이벤트 영역으로 잡고 싶거나, 접근성을 위해서 특정 뷰로 덮어서 그 부분만 특정 접근성을 주고 싶을때, 가장 단순한 방법은 투명 뷰로 감싸서 처리SwiftUI에서는 투명 뷰로 감싸기 위해서 아래처럼 사용이 가능감쌀 뷰에 overlay를 선언하고 그 위에 Color.clear를 선언하고 여기에 접근성과 tapGesture를 주어서 간편하게 뷰를 감싸는 방법이 존재struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) ..
VStack, HStack 사용 할 때 주의할 점VStack, HStack은 내부 콘텐츠 크기에 의해서, 자기 자신의 크기가 결정되는 컴포넌트대부분 실수하는 것이 VStack, HStack에 패딩을 넣거나 사이즈를 고정하는 경우가 존재ex) VStack에 width를 120으로 고정하는 경우struct ContentView: View { var body: some View { VStack(alignment: .leading) { Text("start") VStack { Text("1") Text("2") Text("3") ..
retroactive 개념단어의 의미"효력이 소급하는"이라는 의미소급하다란 의미는 새롭게 적용된 것이 과거에도 영향을 미친다는 의미ex) 직장인이 25년도 3월에 연봉이 올랐는데, 1월과 2월 월급도 3월에 연봉 오른 값으로 돈을 더 주는 것Swift6.0에서도 @retroactive를 사용하여 코드의 유연성을 가져갈 수 있는데 아래에서 계속 설명@retroactive의 의미이번 프로젝트에서 Foundation에 있는 Date를 사용하다가 id가 필요하여 내가 임의로 Identifiable을 선언한 상태extension Date: Identifiable { public var id: TimeInterval { timeIntervalSince1970 }}1년 후에 갑자기 애플이 Date에 Identi..
changeCount 개념아이폰 사용자가 복사, 클립보드 제거 등의 UIPasteBoard 관련 수정 작업을 하면 애플에서 수정 기록을 기록하는데, 이 기록하는 변수가 changeCount@available(iOS 3.0, *)open class UIPasteboard : NSObject, @unchecked Sendable { open class var general: UIPasteboard { get } open var changeCount: Int { get } // 코드에서는 아래처럼 접근 가능UIPasteBoard.general.changeCount주의할 점)공식 문서에는 0으로 초기화 되는 시점 유저가 기기를 재시작하면 된다고 하는데, 재시작해도 0으로 초기화되지 않음ex) UIPa..
UITableViewCell의 pressed 효과기대하는 pressed 효과 (이 화면은 pressed 효과를 직접 구현한 화면)UIButton의 highlighted 효과처럼 동작 하지만 위처럼 동작하려면 별도 구현이 필요하고, 디폴트는 이렇게 동작됨단, selectionStyle = .none으로 한 상태코드)class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { let tableView = UITableView() override func viewDidLoad() { super.viewDidLoad() tableView.frame = view.bounds..
디스플레이 확대/축소 옵션아이폰에서 Text의 크기도 동적으로 변하지만 Text가 아닌 디스플레이 자체를 확대하고 축소할 수 있는 옵션이 존재위치: 설정 > 디스플레이 및 밝기 > 디스플레이 확대/축소디스플레이 확대/축소 기능디스플레이의 해상도의 비율은 UIScreen.main.scale로 알 수 있지만, 확대/축소했을때의 해상도는 UIScreen.main.nativeScale로 파악이 가능ex) 디스플레이 확대/축소에서 기본으로 둔 경우확대 옵션으로 킨 경우결과)비교)기본확대확대하면 비율이 0.65625%p 증가되었으므로 약 22%가 증가됨때문에 이 확대된 해상도를 고려하여 애니메이션이나 특정한 크기에 관한 대응이 필요한 경우 scale을 nativeScale로 나눈 비율 값을 곱하여 대응이 가능전체..
진동 효과 (CoreHaptics)햅틱을 0.5초 주기로 1초 진동을 3번 순차적으로 주고 싶은 경우? -> CoreHaptics를 사용단순히 한 두번의 햅틱 반응을 주고 싶은 경우는 UIImpactFeedbackGenerator, UINotificationFeedbackGenerator 글 참고AudioToolbox라는 것을 사용하여 진동 효과를 줄 수 있는데, CoreHaptics가 가장 정교하게 진동 세팅이 가능CoreHapcits는 iOS 13부터 제공하며 햅틱의 패턴들을 정교하게 만들어 낼 수 있는 기능사용 방법importimport CoreHapticsenum을 사용하여 햅틱의 종류 설정enum HapticCategory { case a case b}a진동은 여러번 주는 진동으로하고..