在 iOS 的多个视图中使用 UINavigationController 中的固定背景图像?

Posted

技术标签:

【中文标题】在 iOS 的多个视图中使用 UINavigationController 中的固定背景图像?【英文标题】:Use fixed Background Image in UINavigationController among multiple views in iOS? 【发布时间】:2015-08-19 10:19:00 【问题描述】:

我想为整个应用程序使用相同的背景图片,所以我创建了一个普通的UIViewControllerUIImageViewUIContainerView,其中包含一个导航控制器。然后我将所有 ViewController 的背景颜色设置为 Clear Color 这是我的故事板:

但是当我点击按钮时,它们之间的segue 有一些黑色的alpha 背景。看这个 GIF:

那么有没有更好的方法来实现这一点?或者我该如何解决这个问题?谢谢!

【问题讨论】:

你用过这个[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"imageName.png"]]] @Jaideep 我希望背景保持静止,即使视图已经改变(不移动)(GIF 是我想要实现的) “黑色 alpha 背景”是什么意思?我看到一条分隔视图控制器的垂直线,但其他一切都可能只是视频压缩工件。 @NRitH 是的,我不希望该垂直线显示在屏幕上。其他一切都不是视频压缩文物,它真的只是那样显示...... 有趣。我想知道您是否可以添加自定义交互式动画来做到这一点;在过渡期间,我看不到任何地方可以更改视图控制器的外观。 【参考方案1】:

我建议继承 UINavigationController 并在您的 CustomNavController viewDidLoad 中:

将您的 UINavigationBar 设置为透明(这可能也是您想要的)

self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()

设置背景以填充导航控制器视图

let image = UIImage(named: "background")
let bgImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height))
bgImageView.image = image
self.view.insertSubview(bgImageView, at: 0)

【讨论】:

以上是关于在 iOS 的多个视图中使用 UINavigationController 中的固定背景图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 6 中使用具有多个子视图的现有自定义视图自动布局

iOS - 使用/传递手势识别器用于视图中的多个表视图或集合视图(Swift)

在 iOS 的多个视图中使用 UINavigationController 中的固定背景图像?

在 IOS 的集合视图中播种从 ELCImagePicker 中选择的多个图像

在iOS中选择多个表格视图单元格的本机方式[关闭]

如何在 iOS 中获取多个滚动视图的索引