Skip to content

Commit 3aaf26b

Browse files
authored
Create 240531_TIL13.md
1 parent 1ee958b commit 3aaf26b

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

WEEK3/240531_TIL13.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# TIL
2+
3+
## 배운 것
4+
5+
* 배운 내용 정리하는 시간
6+
7+
* PropertyObserver - didSet / willSet
8+
9+
tableView.reloadData() 항상 데이터가 변경될 때마다 해주어야 함
10+
11+
```swift
12+
var list = TravelInfo.travel {
13+
didSet {
14+
contentsTableView.reloadData()
15+
}
16+
}
17+
```
18+
19+
didSet, willSet으로 값이 변경될 때마다 해야 할 일을 정의할 수 있음
20+
21+
didSet - newValue, willSet - oldValue
22+
23+
didSet은 값이 변경되었을 때, willSet은 값이 변경되기 직전에 호출
24+
25+
* automatic height 설정
26+
27+
label의 numberoflines = 0인가?
28+
29+
layout이 기준으로 잘 잡혀 있는가?
30+
31+
tableView.rowHeight = UITableView.automaticDimension으로 되어있는가?
32+
33+
* protocol + extension
34+
35+
```swift
36+
protocol ReuseIdentifierProtocol {
37+
static var identifier : String { get }
38+
}
39+
40+
extension UIViewController : ReuseIdentifierProtocol{
41+
static var identifier: String {
42+
return String(describing: self)
43+
}
44+
}
45+
```
46+
47+
protocol로 구현을 강제하고 extrnsion에서 타입 프로퍼티(static var) 로 선언하면 UIViewController.identifier -> identifier와 같이 사용할 수 있다
48+
49+
여기서 String(describing: self)는 자기자신의 이름을 리턴함
50+
51+
* clipToBounds, masksToBounds
52+
53+
cliptoBounds는 모서리에 대한 처리를 할 때 거의 항상 따라다님
54+
55+
cornerRadius는 모서리에 코너를 깎는 개념(clipToBound)
56+
57+
몇 가지 뷰 객체는 clipToBound가 디폴트로 설정, label은 안되어 있음
58+
59+
radius를 그릴때 모서리를 깎고 갖다 버리는 행위와 같음
60+
61+
clipToBounds > 잘라내서 바깥을 버리는 행위와 같음
62+
63+
그림자를 주면서 cornerRadius를 준다 > 불가능(shadow는 바깥에 그려짐..)
64+
65+
cornerRadius 줄 때 clipToBound랑 세트로 써주면 좋다.
66+
67+
clipToBounds
68+
69+
UIView 소속
70+
71+
- true :영역(Super View) 이외 영역의 Sub View는 Draw 하지 않는다
72+
- false :영역(Super View) 이외 영역의 Sub View도 Draw 한다
73+
74+
75+
maskToBounds
76+
77+
CALayer 소속
78+
- 모든 UIView 인스턴스는 기본적으로 하나의 CALayer 인스턴스를 가지고 있음
79+
- 시각적인 역할을 담당하는 오브젝트 ( 콘텐츠 캐싱, 애니메이션 성능 서포트 등)
80+
- 가급적 View 속성 대신 Layer 속성을 변경하는 것을 피하라고 추천함(결과가 잘못될 수 있다)
81+
82+
- Sub Layer가 내 Layer를 넘어선 경우, 내 Layer 너머로 그릴 것인지 말 것인지 한계를 설정
83+
- coreAnimation이 레이어의 경계와 일치하고 모서리 반지름 효과를 포함하는 암시적 클리핑 마스크를 만듬(틀 같은 느낌) > 마스크 속성의 값도 지정하면 두 마스크가 합쳐져서 최종 마스크 값을 얻게 됨
84+
85+
clipToBounds: bound기준으로 범위를 넘는 서브뷰를 자를지 말지
86+
87+
maskToBounds: 레이어를 합쳐서 최종마스크를 얻는데 layer를 넘어서는 부분을 그릴지 말지
88+
89+
* maskedCorners
90+
91+
```swift
92+
posterImageView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]
93+
```
94+
95+
cornerRadius를 줄 모서리 설정함(x, y기준)
96+
97+
98+
## 생각해 볼 것
99+
100+
태그는 고유하지 않아도 된다. 구분하기 위해 고유하게 사용하는 것 뿐이다. default0을 가짐
101+
102+
리팩토링 하는 것 필요. 특히 extension이랑 protocol을 함께 사용하는 것은 해보지 않아서 많이 해보면서 익혀야 함
103+
104+
105+
수업을 들으면서 차근차근 단계별로 수정하는 것의 중요성을 느끼게 되었다.
106+
107+

0 commit comments

Comments
 (0)