在 iOS15 上将 UIActivityViewController 共享模式导航栏更改为不透明
Posted
技术标签:
【中文标题】在 iOS15 上将 UIActivityViewController 共享模式导航栏更改为不透明【英文标题】:Changing UIActivityViewController share modal navigation bar to opaque on iOS15 【发布时间】:2021-11-18 07:35:13 【问题描述】:我在 ios 15 上的共享模式控制器中获得了一个透明的导航栏。但是导航栏的外观已经正确设置,并且在应用程序的任何部分都没有更改。此问题仅发生在 uiactivity 共享模式中,而不是全部发生。
外观设置
// AppDelegate.swift
if #available(iOS 13.0, *)
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
appearance.shadowImage = nil
appearance.shadowColor = .clear
appearance.titleTextAttributes = [
NSAttributedString.Key.font: UIFont.BananaGrotesk(weight: .semibold, size: 16.0),
NSAttributedString.Key.foregroundColor: UIColor.Function.black
]
navBarAppearance.barTintColor = .white
navBarAppearance.standardAppearance = appearance
navBarAppearance.scrollEdgeAppearance = appearance
navBarAppearance.compactAppearance = appearance
else
navBarAppearance.isTranslucent = false
navBarAppearance.backgroundColor = .white
// Remove bottom line aka shadow
navBarAppearance.shadowImage = UIImage()
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.tintColor = .clear
navBarAppearance.layer.shadowOpacity = 0
// Update bar title font
navBarAppearance.titleTextAttributes = [
NSAttributedString.Key.font: UIFont.BananaGrotesk(weight: .semibold, size: 16.0),
NSAttributedString.Key.foregroundColor: UIColor.Function.black
]
我试过了,但什么也没做。
func presentShareActivity(items: [Any])
//let activityVC = UIActivityViewController(activityItems: items, applicationActivities: nil)
let activityVC = UIActivityViewController(activityItems: ["test share copy"], applicationActivities: nil)
if #available(iOS 13.0, *)
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
appearance.shadowImage = nil
appearance.shadowColor = .clear
appearance.titleTextAttributes = [
NSAttributedString.Key.font: UIFont.BananaGrotesk(weight: .semibold, size: 16.0),
NSAttributedString.Key.foregroundColor: UIColor.Function.black
]
activityVC.navigationItem.scrollEdgeAppearance = appearance
activityVC.navigationItem.standardAppearance = appearance
activityVC.navigationItem.compactAppearance = appearance
activityVC.navigationController?.navigationBar.isTranslucent = false
activityVC.navigationController?.navigationBar.scrollEdgeAppearance = appearance
activityVC.navigationController?.navigationBar.standardAppearance = appearance
activityVC.navigationController?.navigationBar.compactAppearance = appearance
present(activityVC, animated: true)
截图
导航栏是透明的,但在滚动时变为不透明。我希望这是不透明的
有趣的是,下面的照片使用相同的代码,但导航栏不透明
【问题讨论】:
您好,可能与您的代码中设置的外观有冲突。您是否尝试在将导航定义为透明的所有地方临时评论?这应该可以解释为什么它不会每次都附加。 @Hikosei 感谢您的建议。帖子上的内容已经是我的应用程序中所有与外观相关的代码。它实际上只是在 Appdelegate 上,然后在活动表示方法上,无论它是否存在,都没有任何变化。 你能分享一个示例项目吗? 【参考方案1】:试试这个:
activityVC.view.backgroundColor = UIColor.systemBackground
它对我有用。 ?
【讨论】:
以上是关于在 iOS15 上将 UIActivityViewController 共享模式导航栏更改为不透明的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS15 上将 UIActivityViewController 共享模式导航栏更改为不透明
在 iOS 上将 Wordpress JSON 解析为 UITableView