※ すべてのコードを載せると量が多くなってしまうので、ポイントを絞って説明します。 ※ すべて見たい方はGitHubを参照してください。 ポイントを簡潔にまとめると以下のようになります。 遷移の始まりと終わりの円のCGPathを取得する 遷移先のUIViewControllerのview.layer.maskにCAShapeLayerを代入する 取得したCGPathを使ってアニメーションを実行する 画面遷移のアニメーションの実装には、UIViewControllerAnimatedTransitioningを使っています。 遷移の始まりと終わりの円のCGPathを取得する // 画面全体を覆う円の半径 let radius = { () -> CGFloat in // centerはタップしたCGPoint let x = max(self.center.x, containerView