首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IOS在同一屏幕上的子viewControllers之间转换

在 iOS 开发中,在同一屏幕上的子 ViewControllers 之间转换是一种常见的场景。以下是实现此功能的一些建议和步骤:

  1. 使用 UIViewControllerTransitionCoordinator

使用 UIViewControllerTransitionCoordinator 可以方便地在两个子 ViewControllers 之间实现动画过渡。以下是一个简单的例子:

代码语言:swift
复制
import UIKit

class FirstViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Customize the view accordingly
    }
}

class SecondViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Customize the view accordingly
    }
}

class ViewController: UIViewController, UIViewControllerTransitionCoordinator {
    let firstViewController = FirstViewController()
    let secondViewController = SecondViewController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Add the first and second view controllers
        addChildViewController(firstViewController)
        addChildViewController(secondViewController)
        
        // Set the initial view controller
        setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
    }
}
  1. 使用Storyboard

在 Storyboard 中,你可以使用 UIViewControllerTransitionCoordinator 实现 ViewController 之间的过渡效果。以下是一个例子:

代码语言:swift
复制
import UIKit

class FirstViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Customize the view accordingly
    }
}

class SecondViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Customize the view accordingly
    }
}

class ViewController: UIViewController {
    let firstViewController = FirstViewController()
    let secondViewController = SecondViewController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Add the first and second view controllers
        addChildViewController(firstViewController)
        addChildViewController(secondViewController)
        
        // Set the initial view controller
        setViewControllers([secondViewController], direction: .forward, animated: true, completion: nil)
        
        // Add the first and second view controllers to the container view
        let containerView = UIView(frame: view.frame)
        addSubview(containerView)
        
        containerView.addSubview(firstViewController.view)
        containerView.addSubview(secondViewController.view)
    }
}
  1. 手动实现过渡效果

你还可以手动实现两个 ViewController 之间的过渡效果。例如,你可以创建一个新的 UIView,将其添加到屏幕顶部,并在其中播放两个 ViewController 之间的过渡动画。在 viewDidLoad 方法中添加以下代码:

代码语言:swift
复制

import UIKit

class FirstViewController: UIViewController {

代码语言:txt
复制
override func viewDidLoad() {
代码语言:txt
复制
    super.viewDidLoad()
代码语言:txt
复制
    // Customize the view accordingly
代码语言:txt
复制
}

}

class SecondViewController: UIViewController {

代码语言:txt
复制
override func viewDidLoad() {
代码语言:txt
复制
    super.viewDidLoad()
代码语言:txt
复制
    // Customize the view accordingly
代码语言:txt
复制
}

}

class ViewController: UIViewController {

代码语言:txt
复制
let firstViewController = FirstViewController()
代码语言:txt
复制
let secondViewController = SecondViewController()
代码语言:txt
复制
override func viewDidLoad() {
代码语言:txt
复制
    super.viewDidLoad()
代码语言:txt
复制
    // Add the first and second view controllers
代码语言:txt
复制
    addChildViewController(firstViewController)
代码语言:txt
复制
    addChildViewController(secondViewController)
代码语言:txt
复制
    // Set the initial view controller
代码语言:txt
复制
    setViewControllers([secondViewController], direction: .forward, animated: true, completion: nil)
代码语言:txt
复制
    // Add the first and second view controllers to the container view
代码语言:txt
复制
    let containerView = UIView(frame: view.frame)
代码语言:txt
复制
    addSubview(containerView)
代码语言:txt
复制
    containerView.addSubview(firstViewController.view)
代码语言:txt
复制
    containerView.addSubview(secondViewController.view)
代码语言:txt
复制
    // Add the custom transition view to the container view
代码语言:txt
复制
    let transitionView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
代码语言:txt
复制
    transitionView.backgroundColor = UIColor.red
代码语言:txt
复制
    containerView.addSubview(transitionView)
代码语言:txt
复制
    // Present the second view controller
代码语言:txt
复制
    secondViewController.view.frame = view.frame
代码语言:txt
复制
    secondViewController.view.alpha = 0
代码语言:txt
复制
    transitionView.frame = CGRect(
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IOS 弹出框

2、弹出框: import UIKit class ViewController:UIViewController { var label:UILabel! override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.brown label = UILabel(frame:CGRect(x:40, y:100,width:240, height:44)) label.text = ”” self.view.addSubview(label) let button = UIButton(frame:CGRect(x:40, y:180,width:240, height:44)) button.setTitle(“打开新的视图控制器”, for:UIControlState()) button.backgroundColor = UIColor.black button.addTarget(self, action:#selector(ViewController.openViewController),fo:.touchUpInside) self.view.addSubview(button) } func openViewController() { let newViewController = NewViewController() newViewController.labelTxt = “传递的参数!” newViewController.viewController = self self.present(newViewController, animated:true,completion:nil) } }

05

IOS移动开发从入门到精通 视图UIView、层CALayer(2)

或者修改 rootViewController参数 2、弹出框: import UIKit class ViewController:UIViewController { var label:UILabel! override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.brown label = UILabel(frame:CGRect(x:40, y:100,width:240, height:44)) label.text = ”” self.view.addSubview(label) let button = UIButton(frame:CGRect(x:40, y:180,width:240, height:44)) button.setTitle(“打开新的视图控制器”, for:UIControlState()) button.backgroundColor = UIColor.black button.addTarget(self, action:#selector(ViewController.openViewController),fo:.touchUpInside) self.view.addSubview(button) } func openViewController() { let newViewController = NewViewController() newViewController.labelTxt = “传递的参数!” newViewController.viewController = self self.present(newViewController, animated:true,completion:nil) } }

01
领券