육식하는야채의 개발일지
article thumbnail

4.5.4 📌 커스텀 세그웨이

앱을 제작하다보면 기본적인 기능의 세그웨이로는 원하는 기능을 충분히 구현하기 어려운 경우가 있다.

이럴 때 UIStoryboardSegue 클래스를 서브클래싱하여 새로운 기능을 갖춘 세그웨이 객체를 정의할 수 있다.

이를 커스텀 세그웨이 (Custom Segue)라고 부른다.

 

커스텀 세그웨이 실습

커스텀 세그웨이를 만들기 위해서는 UIStoryboardSegue 클래스를 상속받는 클래스를 만들어야 한다.

import UIKit

class NewSegue: UIStoryboardSegue {
	
	override func perform() {
		let srcUVC = self.source
		let desrUVC = self.destination
		UIView.transition(from: srcUVC.view, to: desrUVC.view, duration: 2, options: .transitionCurlDown)
	}
}

NewSegue.swift 파일을 생성하고 UIStoryboardSegue를 상속받는 클래스를 만든다.

세그웨이의 실행을 처리하는 메소드는 perform()메소드이기 때문에 perform메소드를 override한다.

let srcUVC = self.source
let desrUVC = self.destination

세그웨이의 출발지와 목적지 뷰 컨트롤러 인스턴스를 각각의 변수에 할당하는 코드이다.

속성의 타입은 UIViewController이다.

 

UIView.transition(from: srcUVC.view, to: desrUVC.view, duration: 2, options: .transitionCurlDown)

양쪽 사이의 화면 전환 방식을 정의해주는 코드이다.

UIView 객체의 전환 기능을 사용하는 방법이다. transit()은 타입 메소드이기 때문에 UIView 클래스의 인스턴스를 생성하지 않고

호출할 수 있다.

각각의 파라미터는 다음과 같다.

from : 출발지 뷰

to : 목적지 뷰

duration : 화면 전환에 소요되는 시간 ( 단위 : 초 )

options : 애니메이션 전환 옵션

 

화면 전환이 완전히 끝난 후 처리할 내용이 있다면 completion 파라미터를 추가하여 클로저나 함수를 파라미터로 전달할 수 있다.

 

첫 번째 뷰 컨트롤러에 버튼을 만들고 액션 세그웨이를 연결한다.

연결은 Custom으로 연결한다.

커스텀으로 연결하면 위와 같은 아이콘이 보이게 된다.

 

세그웨이를 클릭하고 우측에서 작성한 NewSegue를 선택한다.

 

실행결과

 

profile

육식하는야채의 개발일지

@육식하는야채

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!