일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애니메이션
- clean architecture
- 클린 코드
- uitableview
- UITextView
- 리펙터링
- swift documentation
- Xcode
- uiscrollview
- SWIFT
- Observable
- tableView
- swiftUI
- Clean Code
- ios
- Protocol
- MVVM
- Refactoring
- 리팩토링
- collectionview
- ribs
- Human interface guide
- map
- combine
- RxCocoa
- HIG
- rxswift
- 리펙토링
- 스위프트
- UICollectionView
- Today
- Total
목록2022/05 (31)
김종권의 iOS 앱 개발 알아가기
사용한 프레임워크 snapkit - 코드로 autolayout을 편리하게 구현하기 위해서 사용 구현 아이디어 UIView를 커스텀하여 팝업 뷰로 생성 팝업이 뜰때 뒷 배경이 어두워져야하고, 덮혀지는 뷰의 interation을 막아야하므로 사용하는 쪽에서 autolayout으로 화면 전체로 잡아서 사용 화면 전체로 잡혀야하므로, 커스텀 팝업 뷰의 UI구성은 아래처럼 구성 (처음부터 가지고 있는) UIView - 어두운 배경으로 사용 그 위 팝업 contentView - 팝업 제목과 같은 팝업 내용이 들어갈 흰색 뷰 애니메이션 구현 애니메이션은 아래에서 위로 올라와야하므로, autolayout으로 처음에 흰색 뷰를 화면 밑에 놓고, show() 라는 메소드를 만들어 이 메소드를 호출할 때 위로 올라오게끔 a..
Custom Loading 구현 아이디어 최상위 UIWindow는 UIView를 서브클래싱한 인스턴스이므로, window.addSubview하여 커스텀 로딩 화면을 넣어주면 UIWindow하위에 존재하는 현재 화면위에 로딩이 뜨도록 구현 Loading 애니메이션은 Lottie 사용 사용한 프레임워크 Lottie -로딩 애니메이션에 사용 SnapKit - 코드 베이스로 레이아웃 구현에 편의를 위해 사용 pod 'lottie-ios' pod 'SnapKit' UIWindow 개념 UIWindow는 사용자에게 보여지는 화면을 담고 있는 최상위 ContainerView 실제로도 UIWindow는 UIView의 서브클래스 이 밖에도 UI 이벤트 처리도 같이 담당 싱글톤인, AppDelegate로 window에 ..
예제에 사용한 프레임워크 SnapKit Then RxSwift, RxCocoa Kingfisher Alamofire # UI pod 'SnapKit' pod 'Then' # Util pod 'RxSwift' pod 'RxCocoa' pod 'Kingfisher' # Network pod 'Alamofire' 페이지네이션 아이디어 2가지 1번 방법) 스크롤된 위치를 계산하여, 남은 아래 영역이 프레임의 크기보다 작게 남은 경우, 페이지네이션 실행 2번 방법) delegate 메소드인 tableView(_:prefetchRowAt:) 를 사용하여 prefetch 사용 func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]..
gesture 인식 사전 지식 someView.isUserInteractionEnabled = false인 경우, someView의 subview들은 모두 gesture 이벤트를 받을 수 없는 상태 super.viewDidLoad() self.view.isUserInteractionEnabled = false // self.view에 추가되는 뷰들은 제스처 이벤트 수신 불가 self.view.addSubview(self.someButton) someView.addSubview(topView)로 추가되는 경우, someView에 있던 UI들이 topView에 가려지면 someView 터치 인식이 불가능 hitTest를 이용하면 topView로 가려져도 someView의 UI들의 터치 이벤트 인식이 가능 h..
View와 Layer private let someView: UIView = { let view = UIView() view.backgroundColor = .systemBlue view.layer.shadowOffset = CGSize(width: 0, height: 10) view.layer.shadowColor = UIColor.black.cgColor view.layer.shadowOpacity = 0.3 view.layer.cornerRadius = 60 view.layer.borderWidth = 3 view.layer.borderColor = UIColor.green.cgColor view.translatesAutoresizingMaskIntoConstraints = false return ..
Hugging과 Compression 개념 Hugging 뷰가 고유 크기보다 커지는 것을 방지하기위해 우선 순위를 설정하는것 커지지 않게 하다 = "Hugging" Compression 뷰가 고유 크기보다 작게 되는것을 방지하기위해 우선 순위를 설정하는것 작게 되지 않게 하다 = "CompressionResistance" * Hugging, Compression 관련한 더욱 자세한 개념은 이전 포스팅 글 참고 Default Priority 값 * 위 표는 code base기준이므로, Interface Builder 사용 시 다른 표 참고 UISwitch와 UILabel을 코드로 만들었을 때, horizontal의 디폴트 hugging 값이 각각 다르며, 이처럼 UI마다 각각 다른 default값이 존재 ..
1. UICollectionViewFlowLayout 사용 방법 - 수평 스크롤 뷰 (horizontal scroll view) 2. UICollectionViewFlowLayout 사용 방법 - 격자, 그리드 뷰 (grid view) FlowLayout을 사용하면 columns 수도 손쉽게 변경 가능 구현 아이디어 셀의 레이아웃을 결정하는 곳은 델리게이트임을 알고 (UICollectinoViewDelegateFlowLayout) 여기서 셀의 크기를 결정하도록 설정 위 델리게이트 중 sizeForItemAt 메소드에서 collectionView의 width값을 가져와서 너비에 관한 적절한 크기를 계산해서 셀의 크기를 결정해주면 grid cell 완성 셀의 크기 계산 collectionView.bounds..
1. UICollectionViewFlowLayout 사용 방법 - 수평 스크롤 뷰 (horizontal scroll view) 2. UICollectionViewFlowLayout 사용 방법 - 격자, 그리드 뷰 (grid view) cf)UICollectionViewCompositionalLayout를 이용한 방법은 이 포스팅 글 참고 구현 아이디어 커스텀 셀 셀의 CGSize 크기는 collectionView를 사용하는쪽에서 정해질 것을 인지하고 cell에서는 autolayout 작성 시 크기를 생각하지 않고 레이아웃만 집중 collectionView 사용하는 곳 flowLayout인스턴스의 scrollDirection 방향을 horizontal로 설정 flowLayout인스턴스의 cellSize ..