티스토리 뷰

TIL

[TIL] 2022 / 07 / 10

희철 2022. 7. 10. 22:42

메모리

 

 

메모리는 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