- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
更新 2:我仍然希望在这个问题上得到一些帮助,所以既然我已经更好地缩小了范围,我将稍微完善我的问题。
我的 UIViewController
层次结构如下所示:
如果用户触摸过滤器图标并选择电梯类型,则会出现过滤器 View 。左边的图像是没有选择过滤器的样子,右边的图像是选择过滤器的样子。导航区域(以绿色勾勒出轮廓)是我要设置的样式。
这是我想不通的事情。如果我添加这两件事:
UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().barTintColor = UIColor(hexString: "232B35")
然后在导航区域和筛选 View 之间出现一个空白区域:
如果我将半透明属性设置为 true,则不会出现空白,但 barTintColor 将不起作用。
请注意,我没有在我的UIViewController
中放置一个UINavigationBar
。我只有一个要用代码添加的 UINavigationItem
。
在这一点上,我的问题是 - 当我的代码中有 UINavigationBar.appearance().translucent = false
时,为什么突然出现大空白(我能做什么摆脱它,但仍然改变我的导航区域的颜色)?
我真的被困住了,希望得到一些帮助。谢谢!
以下是我的原始问题,其中包含可能有用或无用的信息:我正在尝试设计我的应用程序的样式,但很难做到。在一个 UIViewController
上,我有一个 ThemeManager struct
,它具有将主题应用到应用程序的功能,并在该方法代码中使导航栏与背景颜色融为一体应用程序:
static func applyTheme(theme: Theme) {
// set the background color
sharedApplication.delegate?.window??.backgroundColor = UIColor(hexString: "232B35")
UINavigationBar.appearance().translucent = false // these are the offenders
UINavigationBar.appearance().barTintColor = UIColor(hexString: "232B35")
// first, set backgroundimage to nothing
UINavigationBar.appearance().setBackgroundImage(
UIImage(),
forBarPosition: .Any,
barMetrics: .Default)
// and also set shadowimage to nothing
UINavigationBar.appearance().shadowImage = UIImage()
UIStatusBarStyle.LightContent
UILabel.appearance().textColor = UIColor(hexString: "768DAA")
}
}
我的初始 ViewController
看起来像我想要的那样 - 背景和导航组件颜色相同:
但是在不同的 View Controller 上,它有这么大的空间,我不想要:
我发现是 UINavigationBar.appearance().translucent
和 UINavigationBar.appearance().barTintColor
属性导致了这种情况发生。就好像它在实际导航区域下面添加了一个 UINavigationBar
。如果我注释掉该代码,它当然没有颜色,但我不想要的大空间也会消失:
这两个 VC 之间的最大区别是:在第一个看起来像我想要的 VC 中,我有意通过 Storyboard放置了一个 UINavigationBar
但在第二个 VC 中我没有。我只在其中放置了一个 UINavigationItem
。另请注意,第二个 VC 包含一个 UITableView
但它不是 UITableViewController
。
如何在导航区域中获得我想要的纯色而不在其下方添加不需要的空间?
编辑#1这是对有问题的 UIViewController
的另一种看法:
注意层次结构是带有@IBOutlet 连接的UIView
,在它下面是一个UIStackView
,它包含过滤 View (一个UIView
)使用高度布局约束和 UITableView
展开和折叠。所以出现的大空白甚至不在我的层次结构中。
如果有帮助,这里是 Lift Log 的 UIViewController
中的 viewDidLoad
方法:
类 LiftLogViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {
//MARK: IB outlets
@IBOutlet var tableView: UITableView!
@IBOutlet weak var navItem: UINavigationItem!
@IBOutlet weak var filterViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearFilterButton: UIImageView!
@IBOutlet weak var selectedFilter: UILabel!
@IBOutlet weak var clearButtonHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearButtonView: UIImageView!
let coreDataStack = CoreDataStack()
var liftEvents = [LiftEvent]()
var isFilterViewOpen = false
override func viewDidLoad() {
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: #selector(self.dismissLog(_:)))
let filterImage = UIImage(named: "filter_icon")
let filterButton = UIBarButtonItem(image: filterImage, style: .Plain, target: self, action: #selector(self.actionFilter))
self.navItem.rightBarButtonItems = [doneButton, filterButton]
let buttonTap = UITapGestureRecognizer(target: self, action: #selector(self.clearFilter))
clearFilterButton.addGestureRecognizer(buttonTap)
filterViewHeightConstraint.constant = 0.0
clearButtonHeightConstraint.constant = 0.0
super.viewDidLoad()
}
最佳答案
您是否通过 Storyboard将第一个 VC translucent
属性中的 UINavigationBar
设置为 false 以使其与您的 UINavigationBar.appearance()
保持一致?
那么你的第二个 VC Top Bar
应该是从第一个 VC 推断出来的。
关于ios - UINavigationBar.appearance().translucent 正在创建一个大的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39198721/
我正在开发在 Android Lollipop 上运行的应用程序。我已使用以下代码设置状态栏颜色。 首先我设置此标志WindowManager.LayoutParams.FLAG_DRAWS_SYST
下图基本上是我的目标,一个完全透明的导航栏(不是半透明的),它背后的内容不断获得插入更新,所以它在它后面绘制,但没有得到导航控件覆盖的任何 UI。 到目前为止,实现上图中结果的唯一方法是设置标志 FL
我创建了一种新样式来将背景设置为透明,但出于某种原因,因为当设备旋转时应用程序不会将布局更改为横向。 我应该在新样式中指定一些东西吗? 代码如下: @color/background 最佳
更新 2:我仍然希望在这个问题上得到一些帮助,所以既然我已经更好地缩小了范围,我将稍微完善我的问题。 我的 UIViewController 层次结构如下所示: 如果用户触摸过滤器图标并选择电梯类型,
我正在尝试为我的 Android 应用程序使用透明背景,如下所述: http://developer.android.com/training/basics/supporting-devices/pl
我想将支持操作栏添加到我的一项 Activity 中,我之前一直在使用 theme.translucent 进行此 Activity ,但为了使支持操作栏工作,我需要继承 Theme.AppCompa
当您尝试在 iPhone 的“便笺”应用程序中删除便笺时,会弹出 UIActionSheet。该片材是半透明的(但不是黑色半透明的)。这是如何实现的?是否可以将UIActionSheet的背景设置为某
我正在使用:android:theme="@android:style/Theme.Translucent.NoTitleBar" 结合:getWindow().setFlags(WindowMana
我无法禁用 QLPreviewController 的半透明属性。我已经尝试过: let preview = SideQLPreviewController() preview.navigatio
我有一个应用程序,其中包含一个父项和一些子项 Activity 。要求是在子 Activity 启动时播放一些自定义动画。为了流畅的动画并避免切换之间的延迟,我在 list 中的应用程序上应用了 Th
Android 上的 StatusBar 覆盖了我的应用程序的 header 。我所做的一切,我都无法做到不被覆盖。 我试过: 和 StatusBar.setTranslucent(false) 但
我正在开发一个 Android 项目,我在其中有一个登录页面,我想在其中添加用户名和密码字段。我的设计要求我以这种半透明的方式放置它们,并在里面放置图像。我可以为 EditText 更改什么以使其半透
有没有办法为整个应用程序禁用 UINavigationBar Translucency? 我知道使用 [self.navigationController.navigationBar setTrans
我使用 UITableView 实例作为我的 ViewController View 的 subview ,表格的内容高于屏幕,因此它是可滚动的。这是 AppDelegate 中的代码: - (BOO
先说说我的情况。我在我的 appDelegate 中设置了 UINavigationBar 颜色,例如: [[UINavigationBar appearance] setBarTintColor:[
我有一个加载 div,以加载符号作为背景图像。我希望加载符号完全不透明。但是,为了淡化正在加载的页面,我将背景图像设置为具有 80% 的不透明度。这在 Chrome 和 Firefox 中运行良好,但
我正在尝试创建一个全屏半透明叠加层,它会在单击 float 操作按钮时显示,类似于 Google Keep。 (请注意,它扩展到全屏,状态图标突出显示, float 操作按钮突出显示,叠加层的 z-i
我遇到了一个关于导航栏的奇怪问题。我在 UINavigationController 中有一个带有 UItableViewControllers 和 UIViewController 的应用程序。 应
在我的新 iOS 应用中,我想为整个应用及其 View 使用固定背景。 当单击导航项以显示设置表 Controller 时,一个丑陋的黑色半透明层或类似的东西会在几分之一秒内出现在整个屏幕上,直到动画
我在下面有这个圆柱体对象: glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cylinder_mat); cylinder(); 其中 static GL
我是一名优秀的程序员,十分优秀!