일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- combine
- swift documentation
- UITextView
- MVVM
- tableView
- Protocol
- uiscrollview
- Xcode
- rxswift
- HIG
- SWIFT
- UICollectionView
- ios
- Refactoring
- RxCocoa
- clean architecture
- Clean Code
- 리펙토링
- Observable
- ribs
- 리팩토링
- map
- Human interface guide
- 스위프트
- swiftUI
- 애니메이션
- collectionview
- scrollview
- 클린 코드
- uitableview
- Today
- Total
목록scrollview (14)
김종권의 iOS 앱 개발 알아가기

ScrollView안에 Spacer 적용하는 케이스ScrollView안에 Spacer를 잘 활용해야하는 아래와같은 경우가 존재ex) button은 항상 디바이스 하단에 떠 있고, 그 뒤에 스크롤되는 2개의 텍스트가 있는 경우 ("iOS앱 개발 알아가기", "jake") 상단의 Text가 짧을때는, "jake" Text는 하단 SafeArea로 부터 56만큼 간격 유지상단의 Text가 길어져서 스크롤이 많이 가능하게되면 "jake"는 스크롤 영역이므로 스크롤 밑쪽에 위치상단이 짧은 텍스트상단이 긴 텍스트f구현방법은 상단 Text와 하단 Text 사이에 Spacer()를 넣고, 하단 패딩을 주는 방법이 있는데, ScrollView안에 Spacer()를 그대로 사용하면 동작하지 않음ex) ScrollView안..

키보드와 스크롤 뷰스크롤 뷰 안에 있는 TextField를 탭하여 키보드가 등장할 때, 키보드와 TextField 사이의 거리 최소 32만큼 스크롤링 되는 방법?ex) 키보드와 포커싱된 TextField 사이의 거리를 최소 32로 설정한 예제구현 아이디어키보드 높이가 변하는 이벤트를 감지키보드가 등장하면 safeAreaPadding을 32로 설정, 키보드가 다시 들어가면 0으로 설정구현키보드 이벤트 감지키보드 이벤트를 감지하는 ObservableObject 성격의 클래스 구현public class KeyboardInfo: ObservableObject { public static var shared = KeyboardInfo() @Published public var height: CG..

키보드와 safeAreaSwiftUI를 사용하면 키보드가 등장할 때 safeArea의 영역이 변경됨키보드가 올라올 때 별다른 처리가 없어도 키보드가 올라올 때 safeArea가 동적으로 키보드 위로 변하면서 같이 올라가는 것 전체 코드) struct ContentView: View { @State private var text = "" var body: some View { VStack { Spacer() Text("safeArea 예제") .padding() TextField("여기에 텍스트를 입력하세요", text: $text) .textFiel..

ScrollViewSwiftUI에서는 ScrollView를 사용할 때, UIKit에서 제공하는 UIScrollView와는 아래 정보 확인이 바로 어려움reachToBottom (스크롤이 바닥에 도달했는지)contentOffset (얼만큼 스크롤을 진행했는지)위 정보를 알 수 있으려면 ScrollView를 감싸서 따로 계산하여 정보 획득이 가능reachToBottom과 contentOffset 구하는 아이디어ScrollView를 감싸서 구현하고, 아래처럼 사용하는쪽에서는 CustomScrollView에 클로저로 콘텐츠 뷰들을 넣을 수 있도록 구현 var body: some View { VStack { CustomScrollView( frameHeight: 300, ..

1. FlexLayout과 PinLayout 사용 방법 - UIStackView 개선, 속도 향상, 기능 추가, 선언형 2. FlexLayout과 PinLayout 사용 방법 - 여백(margin, padding), 정렬(alignItems, justifyContent) 3. FlexLayout과 PinLayout 사용 방법 - 특정 뷰(Cell, scrollView), 기타(grow, shrink) scrollView에 적용 방법 1. 뷰 준비 - container, scrollView, contentView scrollView안에 들어갈 뷰는 내부적으로 contentSize 크기에 따라 스크롤이 결정되는 UIScrollView + UIStackView처럼 구현 (이 구현 방법은 이전 포스팅 글 참고)..

1. FlexLayout과 PinLayout 사용 방법 - UIStackView 개선, 속도 향상, 기능 추가, 선언형 2. FlexLayout과 PinLayout 사용 방법 - 여백(margin, padding), 정렬(alignItems, justifyContent) 3. FlexLayout과 PinLayout 사용 방법 - 특정 뷰(Cell, scrollView), 기타(grow, shrink) 예제로 잘성될 코드 준비 import UIKit import FlexLayout import PinLayout class ViewController: UIViewController { private let container = UIView() private let label1: UILabel = { let ..

목차) SwiftUI의 기본 - 목차 링크 ForEach collection형태의 데이터들에 접근하는 구조체 collection 형태인 데이터는 반드시 identifiable을 준수하는 구조체 ForEach는 collection을 순회할때 RandomAccess 방식을 사용하므로 효율적인 탐색이 가능 사용 방법 모델에 Identifiable을 준수하도록 구현 배열 collection으로 데이터 준비 private struct NamedFont: Identifiable { let name: String let font: Font var id: String { name } } private let namedFonts: [NamedFont] = [ NamedFont(name: "Large Title", fon..

목차) SwiftUI의 기본 - 목차 링크 List 형태 Hashable을 따르고, View를 준수하는 두 개의 제네릭스로 구성 struct List where SelectionValue : Hashable, Content : View 사용방법은 List 후 클로저안에 subviews들을 넣어서 구현 struct ContentView: View { var body: some View { List { Text("A List Item") Text("A Second List Item") Text("A Third List Item") } } } List(:) { } 형태로도 사용이 가능 struct Ocean: Identifiable { let name: String let id = UUID() } privat..