【发布时间】:2018-07-03 14:40:04
【问题描述】:
我在更新应用程序以使 UINavigationBar 实例显示大标题时遇到了问题。问题是在我的应用程序的某些屏幕中,我不希望UINavigationBar 具有shadow 或backgroundColor,因此我有一种方法可以将其外观从“固态”状态更改为“透明” “一,倒退。代码如下:
public static func setNavAppearance(type: AppearanceType, navigationBar: UINavigationBar?) {
if (type == .transparent) {
navigationBar?.setBackgroundImage(UIImage.init(), for: .default)
navigationBar?.shadowImage = UIImage.init()
navigationBar?.isTranslucent = true
}
else {
navigationBar?.shadowImage = nil
navigationBar?.setBackgroundImage(nil, for: UIBarMetrics.default)
navigationBar?.isTranslucent = false
}
}
如您所见,此方法所做的只是更改translucent 属性并设置/取消设置shadowImage 和backgroundImage。这在不使用大标题的情况下工作得很好,我附上设置透明外观的图像:
UINavigationBar without background image and shadow, but showing UIBarButtonItems and backButton
对于大标题,这仍然可以正常工作;将外观类型设置回“实心”后出现问题。我再附上两张显示问题的图片:
UINavigationBar still doesn't have background
After scrolling up a bit so that large title is collapsed, background color appears
所以问题是,只有在navigationBar 不显示大标题时才会显示该背景。我不知道我是否必须更改其他属性,否则这不适用于大型标题。任何帮助将不胜感激,在此先感谢。
【问题讨论】:
-
我也有类似的问题,请问有解决方法吗?
-
你解决了吗?
-
@Eduard 不,我还没有找到任何有效的解决方案。我所做的是在推送时隐藏导航栏,然后使用情节提要将导航栏添加到视图控制器,并自定义该导航栏。返回的交互手势丢失了,但至少是一种按照我们想要的方式自定义导航栏的方式。
标签: ios xcode uinavigationbar large-title