유튜브 링크
# Any & AnyObject
let unknown: Any = ...
if let foo = unknown as? MyType {
}
segue
- 한 MVC 에서 다른 MVC 로의 전환, 이동
# Views
- UIView 의 서브클래스로 직사각형의 영역
- 좌표계를 지니며
- 그림을 그릴 수 있고
- touch event 를 핸들링함
- 계층적 구조
- 하나의 view 는 superview 는 1개만을 가지나, subview 는 0 ~ n개
- 보통 스토리보드를 이용해 계층을 형성하나,
- addSubView(_:), removeFromSuperView() 메서드를 통해 코드로도 가능
- UIWindow : 최상단의 UIView 로 iOS 에서는 1개만 존재
- UIView 를 스토리보드에서 만들었는지, 코드로 만들었는지에 따라 init 이 다름
- init을 쓰려면 둘 다 구현해야 함(최대한 init 사용을 지양할 것)
func setup() { ... }
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
- init 대신 init 직후에 호출되는 awakeFromNib() 메서드를 사용할 수도 있으나, 스토리보드를 통해 만든 UIView(엄밀히 말하면 NSObject 를 상속하는 모든 스토리보드로 만든 객체)에만 적용되며, 순서가 무작위
# bound vs frame
- bound : view 가 그려지는 직사각형 내부의 위치와 크기로, 독립적인 좌표계를 가짐
- frame : superview 의 좌표계 상에서 UIView 를 담고 있는 직사각형
bound 는 UIView 의 크기를, frame 은 superview 의 좌표계에서 UIView 의 위치를 지정한다고 생각하면 됨

# Creating Views
- 보통 스토리보드를 이용해서 뷰를 생성하나 코드를 이용해서도 가능

# Custom Views


# Defining a Path

# UIColor
- view 에서 opacity 는 디폴트가 1(완전 불투명)로 설정되어 있기 대문에, 투명도를 조정하고 싶다면 UIView 의 opaque 프로퍼티를
opaque = false 와 같이 설정해서 시스템에 알려야 한다.
# Layers
- UIView 아래에는 CALayer(Core Animation Layer)가 존재
- 애니메이션 외에도 유용한 메서드들이 있음

# Drawing Text

# Fonts



# Drawing Images


# Redraw on bounds change?

# Layout on bounds change?

☀️ 느낀점
- 오늘은 거의 이론 수업이고, 후반부에 아주 살짝 새로운 앱의 모델만 만들다가 끝나서 이론 정리하려고 해도 적용을 안해봐서 무슨 내용인지 모르겠다...ㅋㅋㅋㅋ
- you can't call methods on type Any
- to use Any, we need to convert it using
as?
- as? could also be used for downcasting, or protocols
let unknown: Any = ...
if let foo = unknown as? MyType {
}
- segue : move from one MVC to another MVC
# view(i.e. UIView subclass)
슬라이드 정리
# initializing a UIView