Memory leak 해결방법까지 같이 넣겠습니다.
필요한 파일
CustomView.swift
CustomView.xib
[1] CustomView.swift 파일 생성
class CustomView: UIView {
class func instanceFromNib() -> UIView {
return UINib(nibName: "CustomView", bundle: nil)
.instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}
[2] CustomView.xib 파일 생성 후 설정.
Custom Class
-> Class
에다가 CustomView 입력.
[3] 버튼 클릭시 화면전환을 하고 싶으면. 버튼 클릭 이벤트에다가 추가.
let sideView = CustomView.instanceFromNib()
sideView.frame = self.view.frame
subUiView.addSubview(sideView)
그러면 끝입니다.!
================================================
하지만 화면전환을 1번 화면 ,2번 화면 여러번 바꿀경우. 화면위에 올려지는 방식이기에 메모리에 계속 쌓이게 됩니다.
이것을 해결하기 위해서는 willRemoveSubview
을 이용하여 view를 제거하면 됩니다.
@IBOutlet weak var subUiView: UIView!
var check:Bool=false // 버튼 클릭시 마다 화면 전환
let sideView = CustomView.instanceFromNib()
let sideView2 = CustomView2.instanceFromNib()
@IBAction func changeButton(_ sender: Any) {
if(check){
sideView.frame = self.view.frame
subUiView.willRemoveSubview(sideView2)
subUiView.addSubview(sideView)
} else {
sideView2.frame = self.view.frame
subUiView.willRemoveSubview(sideView)
subUiView.addSubview(sideView2)
check = !check
}
}
willRemoveSubview 안써도 되는거 같네요. 메모리 확인해보니..
'Mobile App > iOS' 카테고리의 다른 글
iOS - UI test 한번에 하기 (0) | 2019.11.24 |
---|---|
iOS 메모리 관리 방법 memory graph view (0) | 2019.03.19 |
스토리 보드 분리할 경우 생기는 오류 해결 방법(iMessage) (0) | 2019.03.09 |
Swift - 4 image 불러오기, url image 불러오기 (0) | 2019.03.09 |
Swift 4 - 영상처리 관련 코드 주석 (0) | 2019.03.09 |