仅当在 iOS 7 弹出框内使用视图时,如何使视图背景透明?

Posted

技术标签:

【中文标题】仅当在 iOS 7 弹出框内使用视图时,如何使视图背景透明?【英文标题】:How to make the view background transparent only if the view is used inside an iOS 7 popover? 【发布时间】:2014-01-27 13:30:05 【问题描述】:

ios 7 HIG 说:

(默认情况下,弹出窗口中的表格视图、导航栏和工具栏 使用透明背景让弹出框的模糊显示 通过。)

为我的自定义视图复制表格视图的这种行为(iOS 6 上的白色背景和/或不在弹出窗口中时,在 iOS 7 弹出窗口中时透明)的推荐方法是什么?

【问题讨论】:

【参考方案1】:

它很简单,只需将 iOS 6 的 UITableView 背景设置为白色,iOS 7 使其清晰

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) 
   // Load resources for iOS 6.1 or earlier
 else if (isPresentedWithPopOver) 
   // Load resources for iOS 7 or later
 else 
   // Load resources for iOS 7 or later

【讨论】:

问题是,当不在弹出窗口中时,它在 iOS 7 上也需要是白色的。 在这种情况下,当您在弹出窗口中呈现 UITableView 时,您必须管理另外一个变量 UITableView 会自动执行此操作。但是 Apple 的 table view 是如何在没有明确告知的情况下知道其内部等效于 isPresentedWithPopOver 的内容的呢?我想以同样的方式为我的自定义视图做这件事。 当您将表格呈现到弹出框时,您可以定义并设置这种变量来修改行为,因为 tableView 永远不知道它的呈现位置。 UITableView 不知何故知道它从哪里呈现。我想知道魔法是如何运作的。

以上是关于仅当在 iOS 7 弹出框内使用视图时,如何使视图背景透明?的主要内容,如果未能解决你的问题,请参考以下文章

选择器作为弹出框内的输入视图

仅当键盘覆盖视图时如何更改 UITableView 内容插图?

弹出框内选择器视图中的问题

从弹出框内的按钮更改视图

iOS 弹出框在关闭后不会消失

在 iOS 8 中呈现弹出框时如何使屏幕模糊