| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- RxCocoa
- Refactoring
- 리펙토링
- map
- Human interface guide
- Observable
- uiscrollview
- scrollview
- ios
- 클린 코드
- collectionview
- 스위프트
- 리팩토링
- uitableview
- 애니메이션
- Clean Code
- MVVM
- ribs
- swiftUI
- Xcode
- Protocol
- tableView
- rxswift
- UITextView
- combine
- clean architecture
- swift documentation
- UICollectionView
- SWIFT
- HIG
- Today
- Total
목록전체 글 (1687)
김종권의 iOS 앱 개발 알아가기
Spacer(minLength:) 개념Spacer 컴포넌트는 유연적으로 늘어나도록 설계되어 공백 처리를 쉽게하기 위한 컴포넌트공백을 주려고 할 때, 구체적인 수치를 주어서 공백을 유지시키는 케이스가 있고, 공백은 최소 몇 이상만 유지하는 UI를 구현하는 경우가 있는데, 공백을 최소 유지시키려고 할 때 Spacer를 사용하는 것Spacer(minLength:)는 컴포넌트 우선순위가 높아서, 다른 콘텐츠가 길어졌을때 minLength만큼은 침범하지 않게끔 하는 성격이 있음Spacer를 사용할 때 실수하는 점Spacer(minLength:)는 단어 그대로 minLength값을 받아서 최소 크기만 유지시키고 동적으로 늘어나는 컴포넌트때때로 공백을 고정시키려고 할 때 Spacer(minLength:)를 사용하고 ..
그라데이션 넣는 방법SwiftUI의 LinearGradient를 사용하여 그라데이션 적용LienearGradient는 단어 그대로 선형적인 그라데이션이며, 3가지의 init이 존재@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)@frozen public struct LinearGradient : ShapeStyle, View, Sendable { public init(gradient: Gradient, startPoint: UnitPoint, endPoint: UnitPoint) public init(colors: [Color], startPoint: UnitPoint, endPoint: UnitPoint) public init(..
if, else 문을 쓰는 케이스만약 아래처럼 버튼을 눌렀을 때 특정 뷰에 애니메이션을 주어야하는 경우?구현 아이디어뷰를 만들 때 if, else문이 없이 아래처럼 animation을 주는 방법도 존재버튼이 눌릴때마다 isFlipped 값을 변경@State var isFlipped = falseText("🚀 SwiftUI Power!") .font(.largeTitle) .fontWeight(.bold) .foregroundColor(isFlipped ? .blue : .purple) .scaleEffect(isFlipped ? 1.5 : 0.5) .rotationEffect(.degrees(isFlipped ? 360 : -180)) .opacity(isFlipped ..
SwiftUI에서 키보드 높이 구하는 방법Combine을 사용하지 않으면 KeyboardInfo라는 클래스에서 기존 UIKit방식대로 NotificationCenter로 등록하는 방법이 있음public class KeyboardInfo: ObservableObject { public static var shared = KeyboardInfo() @Published public var height: CGFloat = 0 private init() { NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardChanged), name: UIApplication.keyboardWillS..
deprecated 옵션 기초 개념만약 새로운 함수가 필요하여 기존에 사용하던 함수는 deprecated되었다는 의미를 개발자에게 주고 싶은 경우 아래처럼 @availble(*, deprecated)를 사용하여 알려주는 방법이 존재class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() deprecatedFunc() deprecatedFunc2() } @available(*, deprecated) func deprecatedFunc() { } @available(*, deprecated, message: "새로운 A ..
private extension과 fileprivate extension 개념private extension ViewController { func abc() {}}fileprivate extension ViewController { func abc2() {}}위 코드는 동작상 동일private extension으로 선언을하더라도, 마치 fileprivate처럼 해당 파일 안에서는 abc()접근이 가능잘못된 개념) ViewController 클래스 내부에서는 abc()를 모두 접근가능ex) ViewController 외부에 있는 ViewController2에서도 abc()접근이 가능class ViewController: UIViewController { override func viewD..
alignement 개념보통 HStack, VStack을 사용하다보면 alignment 값이 있는데 대부분은 default(.center)로 두고 사용하지만 이 값을 잘 사용하면 다양한 뷰 배치를 편리하게 할 수 있는 장점이 존재속성을 알아보기 전에, HStack(alignment:)에서 alignment의 의미를 파악하는것이 가장 중요alignment 의미?HStack은 뷰들을 왼쪽에서 오른쪽으로 채워주는 컨테이너이며, 이미 왼쪽에서 오른쪽이라는 Horizontal 의미를 가지고 있지만, Vertical의 의미는 정해지지 않았으므로 alignment에서 정하는 것HStack에서 alignment는 HStack의 y좌표를 의미alignement의 디폴트 값은 center이므로 아래와 같이 작성하면 콘텐츠..
키보드와 스크롤 뷰스크롤 뷰 안에 있는 TextField를 탭하여 키보드가 등장할 때, 키보드와 TextField 사이의 거리 최소 32만큼 스크롤링 되는 방법?ex) 키보드와 포커싱된 TextField 사이의 거리를 최소 32로 설정한 예제구현 아이디어키보드 높이가 변하는 이벤트를 감지키보드가 등장하면 safeAreaPadding을 32로 설정, 키보드가 다시 들어가면 0으로 설정구현키보드 이벤트 감지키보드 이벤트를 감지하는 ObservableObject 성격의 클래스 구현public class KeyboardInfo: ObservableObject { public static var shared = KeyboardInfo() @Published public var height: CG..
