티스토리 뷰
메모리
메모리는 Code, Data, Heap, Stack으로 나눠져있으며, Heap을 사용하고 난 이후엔 메모리 해제 필수.
-> 메모리 누수로 이어짐
참조 타입의 값들은 모두 Heap에 할당됨.
스위프트에선 ARC를 통해 힙에 할당된 메모리를 자동으로 해제해줌.
강한 참조, 약한 참조, 미소유 참조가 있음.
강한 참조는 인스턴스를 할당할때 참조 횟수가 1 증가하지만 약한 참조와 미소유 참조는 증가하지않음.
클래스 타입의 프로퍼티, 변수, 상수 등을 선언할 때 별도로 식별자를 명시하지 않으면 강한 참조
구조체와 클래스
구조체는 값 타입, 클래스는 참조 타입
구조체는 상속 불가
클래스의 인스턴스에서만 참조 횟수 계산이 가능함.
값 타입은 전달될 값이 복사되어 전달, 참조 타입은 값을 복사하지 않고 참조(주소)가 전달됨.
Xcode에서 Swift Package Manager 이용하기
+ 버튼 -> 링크 입력 -> install
Lottie Animation이용해서 애니메이션 넣기
SPM을 이용하여 패키지 추가 -> 로티 애니메이션 사이트에서 원하는 애니메이션 JSON 다운 후 프로젝트에 넣기 -> 아래와 같이 이용(기본적인 코드)
import UIKit
import Lottie
class ViewController: UIViewController {
let titleLabel: UILabel = {
let label = UILabel()
label.text = "메인 화면"
label.textAlignment = .center
label.font = UIFont.boldSystemFont(ofSize: 50)
return label
}()
let animationView: AnimationView = {
let aniView = AnimationView(name: "111592-happy-pencil")
aniView.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
//aniView.contentMode = .scaleToFill
return aniView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(animationView)
animationView.center = view.center
animationView.play { _ in
self.view.addSubview(self.titleLabel)
self.animationView.removeFromSuperview()
self.titleLabel.translatesAutoresizingMaskIntoConstraints = false
self.titleLabel.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
}
}
가장 마지막 코드는 클로저를 이용하여 애니메이션이 끝난 후 코드 실행하도록 함.
만약 런치스크린의 이미지를 저 애니메이션의 처음 이미지를 두고, 위치를 맞춰준다면 움직이는 런치스크린처럼 보이게 만들 수 있음.
alpha
alpha값이 1에 가까울수록 불투명
배경으로 쓸 뷰만 투명하게 하고싶다면 스토리보드에서 alpha값을 정해주면 뷰에 포함된 다른 객체들도 전부 투명해짐
-> 투명하게 만들 뷰만 아래처럼 코드 작성
bgView.backgroundColor = .black.withAlphaComponent(0.5)
이미지뷰 Blur
코드로 작성해도되고, 스토리보드에서 blur시킬 뷰 위에 "Visual Effect View with Blur"를 추가해도됨.
let blurEffect = UIBlurEffect(style: .regular)
let visualEffectView = UIVisualEffectView(effect: blurEffect)
visualEffectView.frame = self.view.frame
albumImg.addSubview(visualEffectView)
AutoLayout을 연습하기 위해 카카오톡 프로필 UI 만들어봄
'TIL' 카테고리의 다른 글
[TIL] 2022 / 07 / 12 (0) | 2022.07.12 |
---|---|
[TIL] 2022 / 07 / 11 (0) | 2022.07.12 |
[TIL] 2022 / 07 / 09 (0) | 2022.07.09 |
[TIL] 2022 /07 / 08 (0) | 2022.07.08 |
[TIL] 2022 / 07 / 07 (0) | 2022.07.07 |
- Total
- Today
- Yesterday