일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- clean architecture
- 리팩토링
- ios
- Observable
- UICollectionView
- Clean Code
- collectionview
- 애니메이션
- uiscrollview
- uitableview
- Protocol
- 클린 코드
- rxswift
- map
- RxCocoa
- tableView
- 스위프트
- Xcode
- combine
- swift documentation
- swiftUI
- 리펙토링
- ribs
- SWIFT
- UITextView
- Refactoring
- 리펙터링
- Human interface guide
- HIG
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2NiCY/btsIyAj7Jn2/1yMLLkrYihATJZGLH1TaY0/img.gif)
headerView 색상headerView의 색상 backgroundColor를 아래처럼 clear라고 설정한 상태에서, 스크롤 하여 header가 sticky될때 색상이 자동으로 lightGray색상으로 변함import UIKitclass HeaderView: UITableViewHeaderFooterView { ... override init(reuseIdentifier: String?) { super.init(reuseIdentifier: reuseIdentifier) contentView.backgroundColor = .clear // tableView의 스타일 중 디폴트인, plain상태에서는 위처럼 보이고 grouped 상태에서는 아래처럼 backg..
문자열 합치는 방법대표적으로 joined와 reduce가 존재joined는 String 배열일 때 separator를 넣어주면서 합쳐주는 기능extension Array where Element == String { public func joined(separator: String = "") -> String}reduce는 collection type으로 정의되어 있고 컬렉션을 iteration하면서 합쳐주는 기능@frozen public struct Array { @inlinable public func reduce(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cmj8Lk/btsIo6K8S6s/vtVN4hpGaiRD3HRzpWvYUk/img.png)
overlay 주는 방법보통 아래와 같은 뷰가 있을 때, 아래 뷰에 흰색을 섞고 싶은 경우?보통은 black색상에 alpha값을 낮추어 위에 올리는 형태로하는데, 이 방법 외에도 색상을 혼합할 수 있는 방법이 존재compositioningFilter 개념compositioningFilter는 CALayer의 프로퍼티이며, 이 값을 사용하여 계층상 이 layer 앞에 있는 뷰와의 혼합이 가능아래처럼 overlayView를 만들고, 이 layer의 compositingFilter에 "screenBlendMode"를 입력해주고 이 뷰를 addSubview하면 색상이 혼합됨let overlayView = UIView()overlayView.backgroundColor = .lightGrayoverlayView...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clyxbW/btsH8JB8F75/kgTpfnpjcYtdWaXZ1ckYO1/img.png)
낮은 수준의 성능을 야기하는 요소 4가지1) Function call - 최적화 되지 않은 많은 함수 호출2) Memory allocation - 메모리 할당에 너무 많은 시간을 소비3) Memory layout - 데이터가 표현되는 방식 때문에 많은 시간이나 메모리 낭비4) Value copying - 불필요하게 값을 복사하고 파괴하는데 많은 시간을 소비* 1), 2)번 내용은 이전 포스팅 참고3) Memory layoutmemory layout이란?메모리를 할당한 후 해당 메모리를 사용하여 값을 저장하는 방법메모리 에서의 representaion이라는 개념representation은 메모리 안에서 value를 어떻게 바라보는가를 의미아래 코드에서 array는 메모리 관점에서 "두 개의 double 값..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWdB5Y/btsH9pQzYwr/6DGkbKOkcyCIBeDLBuKK9K/img.png)
value를 사용할때의 ownershipvalue를 사용하면 어떻게든 소유권 시스템을 갖음var array = [1,2,3] // array는 [1,2,3]에 관한 소유권을 갖음소유권 시스템값을 소비(consume)하거나 변경하거나(mutate) 빌리는(borrow) 것Consuming values 개념representation의 소유권을 한고셍서 다른 곳으로 이전한다는 의미value를 넘길때 consuming 파라미터를 사용하여 구현ex) 아래 코드에서 발생하는 consuming 이해하기array에 값을 assign할 때, 초기 값의 소유권을 array 변수로 이전함array입장에서 초기값의 소유권을 갖게되므로 "consuming" 함func makeArray() { var array = [1.0, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b80vFt/btsH9nd94Dk/zTXm86tKwf9wK8R6bSAqbk/img.png)
낮은 수준의 성능을 야기하는 요소 4가지1) Function call - 최적화 되지 않은 많은 함수 호출2) Memory allocation - 메모리 할당에 너무 많은 시간을 소비3) Memory layout - 데이터가 표현되는 방식 때문에 많은 시간이나 메모리 낭비4) Value copying - 불필요하게 값을 복사하고 파괴하는데 많은 시간을 소비-> Swift perfomance는 대부분 위 4가지 비용 중 하나 이상에 영향을 미침성능 1) Function call무의식적으로 사용하는 코드중 성능에 영향을 주는 Function call 요소인수, 함수의 주소, 메모리 로컬 상태에 함수 정보 할당Call dispatchstatic dispatch: 컴파일 타임에 우리가 호출하는 함수를 정확히 알..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUUn56/btsH9LFLckM/RyswgznOzmaNmCHhQBEd80/img.png)
Multiline String Literal 개념문자열을 표시할 때 따옴표 3개로 표현하는 것label.text = """abcdef ab123456가나다라"""이 방법을 사용할 때 가끔 indent에 대해서 헷갈리는 경우가 있는데, indent는 끝 따옴표 """의 시작 지점이 0 indent라는 것을 알기ex) 아래 코드들 모두 화면에서는 동일하게 보임 label.text = """abcdef ab123456가나다라"""label.text = """abcdef ab123456가나다라"""label.text = """ abcdef ab 123456 가나다라 """만약 마지막 """ 따옴표를 기준으로 칸이 띄어져 있으면 그만큼 indent가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/soc0Q/btsH0PPEN4k/Pu0x9gUtOj01HuDLbfy3pK/img.png)
Widgets and Live Activities기존에 iOS에만 있던 Live Activities 기능이 watchOS에서도 추가됨iOS 기반의 Live Activities가 자동으로 Apple Watch에 표출supplementalActivityFamilies에 small과 medium을 적용하여 watchOS에서 한 번에 더 많은 가사를 표출custom containers - 새로운 ForEach(subviewOf:)ForEach의 새로운 API인 ForEach(subviewOf:)를 사용하면 재귀적으로 하위뷰를 접근하여, 계속 뷰가 위에 쌓이는 UI구현이 가능 * container 관련 UI 구체적인 개념은 WWDC24 Demystify SwiftUI containers 참고Ease of use ..