小编Cha*_*tha的帖子

为什么 UISearchController 会改变导航栏的颜色?

我已经使用 Xcode 11 (iOS 13) 在故事板中定义了 2 个视图控制器的示例项目中对此进行了测试。“呈现”视图控制器嵌入在导航控制器中,并在viewWillAppear. “搜索”视图控制器增加了一个UISearchControllerviewDidLoad与由所述呈现视图控制器(未模态)推动。

仅在显示搜索视图控制器时进行此设置,导航栏将具有预期的蓝色背景和红色色调。但是,当向下滚动并显示搜索栏时,导航栏的背景颜色会丢失(或更改为默认的 iOS 灰色/半透明)。但是,如果您向上滚动(隐藏搜索栏)或关注搜索栏文本字段,导航栏颜色会返回!

此外,如果您专注于搜索栏文本字段,然后取消(通过点击取消按钮)导航栏的色调将从红色恢复为默认的 iOS 蓝色,这可以通过后栏项目注意到。

加载时的导航栏

搜索上的导航栏

专注于搜索栏

取消搜索栏

有关解决此问题的任何建议?

我也在viewWillAppear搜索控制器的 中设置了导航栏颜色,这并没有改变这种行为。

我为搜索控制器中的导航栏设置isTranslucenttrue,这似乎阻止了背景颜色的恢复,但它并没有改变取消时色调颜色的恢复。

呈现视图控制器

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    navigationController?.navigationBar.barTintColor = .blue
    navigationController?.navigationBar.tintColor = .red
}
Run Code Online (Sandbox Code Playgroud)

搜索视图控制器

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Search VC"

    searchController.dimsBackgroundDuringPresentation = false
    searchController.obscuresBackgroundDuringPresentation = false

    navigationItem.searchController = searchController

    definesPresentationContext = true
}
Run Code Online (Sandbox Code Playgroud)

编辑

除了默认为 iOS 蓝色的系统栏按钮外,按照建议设置scrollEdgeAppearance,backButtonAppearancebuttonAppearance是一种享受。这可以通过设置 UINavigationBar.tintColor …

ios swift uisearchcontroller

9
推荐指数
1
解决办法
2478
查看次数

使用密码付款而不调用didAuthorizePayment

我已经集成了Apple Pay,并且可以按预期在设备上成功运行。但是,当我在显示的视图中单击“使用密码付款”按钮时,使用模拟器时,它从不会调用PKPaymentAuthorizationViewControllerDelegate.didAuthorizePaymnent委托方法,而只会调用PKPaymentAuthorizationViewControllerDelegate. paymentAuthorizationViewControllerDidFinish。有什么想法吗?

我将Xcode 10.3与运行iOS 12.4的iOS模拟器一起使用。我肯定这在Xcode 10.2中可以正常工作。

在此处输入图片说明

swift

5
推荐指数
1
解决办法
148
查看次数

标签 统计

swift ×2

ios ×1

uisearchcontroller ×1