일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HIG
- map
- Human interface guide
- SWIFT
- ribs
- MVVM
- UITextView
- 리팩토링
- swiftUI
- 클린 코드
- swift documentation
- Protocol
- clean architecture
- rxswift
- Observable
- uiscrollview
- 애니메이션
- combine
- Clean Code
- UICollectionView
- 리펙토링
- uitableview
- RxCocoa
- tableView
- Xcode
- Refactoring
- 리펙터링
- collectionview
- ios
- 스위프트
- Today
- Total
목록UIStackView (11)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pPhj4/btsAi3VbySY/9lxXObgMRPDTt6kEb06uwK/img.gif)
* 업데이트 된 최신글: https://ios-development.tistory.com/1565 UITextView 입력 중 위로 스크롤 되는 현상 UIStackView를 사용하여 리스트 형태의 뷰를 보여줄 때 중간에 UITextView가 있다면 버그가 발생 뷰형태: UIScrollView안에 UIStackView을 넣고, 이 스택뷰에 UITextView 넣어서 리스트 형태의 뷰를 만든 형태 ex) 뷰 형태 import UIKit class ViewController: UIViewController { private let scrollView = { let v = UIScrollView() v.translatesAutoresizingMaskIntoConstraints = false return v }(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YKKVS/btstwG7C1Ue/Snv5EK8f8g4MVah8aXkL80/img.png)
UIStackView의 padding 보통 UIStackView를 사용하면 UIStackView안의 아이템들 spacing은 setCustomSpacing(_:after:) 메소드를 사용하여 구현이 가능 stackView.setCustomSpacing(16, after: label1) 만약 UIStackView에 추가한 아이템들과 UIStackView간의 padding을 아래처럼 주고 싶은 경우? UIStackView에 padding 적용방법 UIStackView의 isLayoutMarginsRelativeArrangement를 true로 설정 이 프로퍼티는 margin을 사용하겠다는 플래그값을 의미 (default가 false이며 false이면 margin적용 x) 해당 옵션은 UIStackView에만..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/enGpwQ/btsd1ifUeMk/udTAvVkP53ZZkdhxIhx7b0/img.png)
UIStackView의 removeArrangedSubview 보통 UIStackView의 하위 뷰들을 제거할때 removeArrangedSubview를 통해 제거하는데, 이렇게만하면 memory leak이 발생 subviews에 접근하여 명시적으로 해당 뷰에서 removeFromSuperview()를 호출해줘야 제거가됨 ex) 메모리 릭 확인을 위해, 메모리에서 해제된경우 deinit에서 print문을 호출하는 뷰 정의 class MyView: UIView { init() { super.init(frame: .zero) backgroundColor = .yellow NSLayoutConstraint.activate([ heightAnchor.constraint(equalToConstant: 200), ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDUZ7v/btrXEB4oZpL/KPkTmlXLBKZHZnVfdGnWS0/img.gif)
* Code base로 구현하는 방법은 이 포스팅 글 참고 구현 아이디어 UIStackView안에 UIStackView를 넣어서 구현 storyboard로 구현할때는 code base로 구현하는것보다 손이 더 가는 부분이 있으므로 따로 볼 것 UIScrollView 구현 방법만 숙지하고 있다면 매우 쉽게 접근 가능 UIScrollView 사용 방법 1) UIScrollView를 추가하면 frame layout guide와 content layout guide가 존재 frame layout guide는 UIScrollView를 잡고 constraint 시킬 때, 그 constraint가 frame layout guide로 적용 (동일한것) content layout guide는 스크롤 뷰 안에 새로운 뷰를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dsFqAV/btrXpcvGUbt/EqL4koM1ZcHTcEb84frpa1/img.gif)
구현 아이디어 Cell의 UI가 복잡하거나 여러가지의 타입이 있는 경우 보통 UITableView나 UICollectionView를 사용하지만, 위처럼 단순한 수평 스크롤 뷰는 UIScrollView와 UIStackView로 쉽게 구현 가능 주의할점은 UITableView, UICollectionView는 Cell을 재사용하여 UI성능에 이점이 있으므로, 데이터가 많을때는 UITableView나 UICollectionView를 사용 구현 핵심 부분은 데이터를 선택했을때 해당 데이터의 index를 알아내는 것인데, 이것또한 UIView의 tag를 활용하면 쉽게 구현이 가능 구현 * UI를 코드로 구현할 때 편의를 위해 아래 라이브러리 사용 pod 'SnapKit' pod 'Then' 수평 스크롤 뷰인 My..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkdZxb/btrWR87KmP9/WhNYxZOrtlloqKqgdS3zE0/img.png)
UIStackView 기초 UIStackView를 사용할 때 가장 장점은 뷰를 나열할 때 복잡한 레이아웃 없이 내장된 속성을 이용하여 일관된 뷰 표현이 가능 axis: 방향 spacing: 내부 뷰 사이의 공간 alignment: axis와 반대 방향에 관한 속성 (fill - 늘리기, top - 위에 붙이기, leading - 시작 지점에 붙이기 등등) distribution: axis 방향에 관한 사이즈 제어 속성 (fill, fillEqually 등등) UIStackView 레이아웃 테크닉 UIStackView를 사용할 때 주의할 점은 UIStackView레이아웃 설정 만약 axis 방향이 vertical인 경우, leading과 trailing을 superview로 constraint하는 것을 지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btpDLt/btrVAZZcVfU/D54jmpnvgy3kcfVvI00Qs0/img.png)
Custom TabBar 구현 아이디어 StackView의 distribution을 fillEqually로, alignment를 center로 설정하고 각 버튼을 삽입하여 구현 distribution을 filleEqually로 설정하면 스택뷰안의 아이템들이 동일한 크기로 배치 Custom TabBar 구현 구현에 사용된 extension UIControl에 추가한 addAction은 버튼의 이벤트 처리를 할 때, addTarget 방식이 아닌 클로저 처리 방식으로 사용 UIImage에 추가한 alpha 메소드는 이미지에 alpha값을 부여하는 메소드 // https://ios-development.tistory.com/1237 public extension UIControl { func addAction..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JcuCk/btrUfv6YVRE/n3toAPv2kFOC7mab6eueM0/img.gif)
* Storyboard를 이용한 구현은 이 포스팅 글 참고 UIScrollView UIScrollView의 특징은 layout의 종류가 두 가지 frameLayoutGuide: 변형되지 않은 레이아웃 (autolayout과 같은 제약조건으로 한번 정하면 고정) contentLayoutGuide: 변형되는 레이아웃 (내부 컨텐츠의 intrinsic content size에 의해서 변형) UIScrollView와 UIStackView 사용 방법 * 예제에 코드로 UI작성을 위해 SnapKit 사용 scrollView, stackView 준비 (수직 스크롤 구현할 경우) stackView의 axis를 vertical로 설정 class ViewController: UIViewController { private..