You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现UIPageViewController背景透明?附当前尝试代码

实现UIPageViewController背景透明的解决方案

我看了你这段尝试代码,目前你只处理了分页控件(UIPageControl)的透明设置,但要让整个UIPageViewController背景透明,还需要对PageViewController本身的视图以及子控制器的视图做调整,我帮你优化并补充完整:

关键修改点

  • pageviewcontroller的view设置透明背景
  • 确保添加到PageViewController的子控制器view背景也是透明(否则会遮挡父视图的透明效果)
  • 精简重复的代码逻辑

修改后的完整代码

super.viewDidLoad()

// 初始化并配置PageViewController
self.pageviewcontroller = self.storyboard?.instantiateViewController(withIdentifier: "PageViewController") as! UIPageViewController
self.pageviewcontroller.dataSource = self
self.pageviewcontroller.delegate = self
// 核心:设置PageViewController的背景为透明
self.pageviewcontroller.view.backgroundColor = .clear

// 配置分页控件UIPageControl
let pageControl = UIPageControl.appearance()
pageControl.backgroundColor = .clear
pageControl.pageIndicatorTintColor = .gray
pageControl.currentPageIndicatorTintColor = UIColor(red: 0.0, green: 1.0, blue: 1.0, alpha: 1.0)

// 初始化子控制器并设置其背景透明
let dashboardVC = UIStoryboard(name: "Main", bundle: nil)
    .instantiateViewController(withIdentifier: "DashboardViewController") as! BaseViewController
dashboardVC.view.backgroundColor = .clear // 子控制器背景透明
let qwertyVC = UIStoryboard(name: "Main", bundle: nil)
    .instantiateViewController(withIdentifier: "qwertyViewController") as! BaseViewController
qwertyVC.view.backgroundColor = .clear // 子控制器背景透明

ViewControllers.append(dashboardVC)
ViewControllers.append(qwertyVC)

// 设置初始显示的控制器
if let firstViewController = ViewControllers.first {
    self.pageviewcontroller.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
}

// 别忘了把PageViewController添加到当前视图控制器的view中(如果之前没加的话)
self.addChild(pageviewcontroller)
self.view.addSubview(pageviewcontroller.view)
pageviewcontroller.didMove(toParent: self)

额外说明

  • 如果你的PageViewController是直接通过Storyboard嵌入的,那可以直接在Storyboard里把它的背景色设置为Clear Color,效果和代码里设置view.backgroundColor = .clear一致
  • 子控制器的背景一定要设为透明,不然它们会完全覆盖PageViewController的透明背景,导致你看不到下层内容

内容的提问来源于stack exchange,提问作者siva kumar

火山引擎 最新活动