일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- error
- Swift
- Realm
- Apple
- Xcode
- Session
- github
- mac
- Notification
- 한글
- 개발자
- Git
- 웹뷰
- SwiftUI
- MacOS
- appstore
- JPA
- Firebase
- UIButton
- iOS16
- view
- Code
- stack
- window
- rxswift
- darkmode
- FLUTTER
- Archive
- IOS
- Today
- Total
목록view (4)
EEYatHo 앱 깎는 이야기
ReactorKit 에서 테스트 대상 3가지로 나눠서 확인할 수 있다 View -> Reactor 유저의 인터렉션이 일어났을 때, Reactor 에게 기대되는 Action 을 넘기는지 Reactor -> View Reactor 에서 도달한 State 값에 따라 View 의 property 들이 기대한대로 설정되는지 Reactor Processing ( Action - mutation -> State ) 특정 State에서 특정 Action이 들어왔을 때 State 가 기대한대로 변경되는지 Stub ReactorKit 은 용이한 Test 를 위해, Reactor 에 Stub 이라는 기능을 제공한다. 아래처럼 Reactor 에서 Stub 기능을 사용할 것인지 설정할 수 있다. let reactor = MyR..
아래Button > View > Label 형태의 UI를 구성했었고, View, Label 영역의 터치를 Button이 수신하게 하고 싶었다. 직관적으로는 아래처럼 하면 될 듯 했지만, 안된다. view.isExclusiveTouch = false label.isExclusiveTouch = false // Don't work.. 답은 isExclusiveTouch 가 아닌, isUserInteractionEnabled 이다. view.isUserInteractionEnabled = false 심지어 label은 건들지도 않아도 된다. UILabel의 isUserInteractionEnabled 기본값이 false라서 그렇다.
AutoLayout 방법의 발전 Layout 방법은 AutoLayout을 끝으로, 오랫동안 많은 사람이 썼다. 때문에 다양한 구현법과 유용한 서드파티들도 나와있다. AutoLayout은 기본적으로 NSLayoutConstraint의 인스턴스를 생성하고, 이를 뷰에 붙힘으로써 제약사항을 걸어준다. 즉, 앞으로 나올 방식들은 NSLayoutConstraint 인스턴스를 생성하는 방법이며, 래핑 여부와 방법에 따라 나눠지는 것 1. NSLayout - 가장 고전적인 방법. - 소스가 길다 -> 필요없는 소스가 많음 (.isActive = true 라던지, 쓸대 없이 긴 객체 이름이라던지.. ) - 그다지 직관적이지 않다. 2. Visual Format - 마치 문자열에 뷰를 그리듯이 생성. - 한 축에 해당하..
Layout, Constraint, AutoLayout의 변천사 Swift에서 뷰를 그리는 Layout 방법은 아래 그림과 같이 발전해왔다. View를 Layout하는 방법. Frame-Based Layout -> AutoResizingMask -> AutoLayout AutoLayout의 방법. NSLayout -> VisualFormat -> Anchor -> SnapKit View를 Layout하는 방법의 발전 1. Frame-Based Layout - 뷰의 좌상단 점의 위치와, 넓이, 높이를 지정하여 뷰의 위치를 고정시킴 - 런타임에 뷰들의 구조가 변경되면 영향을 받는 모든 뷰의 프레임을 다시 계산 - 가로모드 화면, 다양한 크기용 뷰 구조가 따로 필요. 이런 방식은, iPhone 5와 iPad가..