小编dan*_*fin的帖子

从 TableView 推送视图控制器后如何保持导航栏标题大

I have a tableview displaying on a main view controller, and when a row is selected a detail view controller is pushed. 我有一个主视图控制器的大标题,以及详细视图控制器的小/常规标题。它们嵌入在导航控制器和标签栏控制器中。

Before selecting a row, the main view controller title is large, and when a row is selected the detail view controller title is regular as it should be. 但是,当我从详细视图控制器(通过“后退”按钮)返回主视图控制器时,主视图控制器上的标题不再大。

我在主视图控制器上将“prefersLargeTitles”设置为true,在详细视图控制器上将“largeTitleDisplayMode”设置为从不。

我曾尝试将“largeTitleDisplayMode”设置为始终在主视图控制器上,但无济于事。我还尝试在任一视图控制器上将其设置为自动,但似乎没有效果。

我还尝试使用“viewWillAppear”和“viewWillDisappear”并在那里设置标题,虽然它确实将主视图控制器标题重置回大,但动画滞后并且不像通常那样平滑小标题到大标题。

此外,我对编码还很陌生,这是我在不使用故事板的情况下构建的第一个应用程序,因此代码可能会一团糟。

主视图控制器代码:

class HomeViewController: UIViewController {

  let tableView = UITableView()

  override func loadView() {
      super.loadView()
      view.backgroundColor = .white
      self.title = "Home"

      // Set large title …
Run Code Online (Sandbox Code Playgroud)

xcode uitableview uiviewcontroller ios swift

6
推荐指数
1
解决办法
2949
查看次数

进入多任务处理时更改 UISplitViewController displayMode 属性?(iOS 14)

如何检测 iPad 多任务处理(即另一个应用程序显示在屏幕上,与我的应用程序并排放置)何时处于活动状态?

我有UISplitViewController以下参数设置如下:

preferredDisplayMode = .twoBesideSecondary
preferredSplitBehavior = .tile
setViewController(SidebarVC(), for: .primary)
setViewController(SuppVC(), for: .supplementary)
setViewController(SecondaryVC(), for: .secondary)
Run Code Online (Sandbox Code Playgroud)

在横向模式下,所有 3 列 ( .primary, .supplementary, .secondary)都有足够的空间。在纵向或多任务处理时,屏幕宽度更窄,我的第 3 列 ( .secondary) 变得非常窄。水平尺寸类保持规则,所以我不能用它来检测它。(当水平尺寸类变得紧凑时,我的UISplitViewController.compact显示和工作都很好)。

我想将UISplitViewController.displayMode属性更改为.twoDisplaceSecondary屏幕较窄时,但水平尺寸类保持规则(即在纵向时,或当另一个应用程序处于多任务处理时)。这将允许将第 3 列推到屏幕外(移位)而不是压扁。

我正在寻找的确切行为的一个完美示例是 iOS 14 中 iPad 上的联系人应用程序。它使用三列布局,似乎显示模式为.tile。当应用横向全屏时,所有 3 列都会显示,并且有足够的空间不会发生挤压。但是,如果您将另一个应用程序带入多任务处理(从而使联系人应用程序宽度变窄,但水平尺寸类保持正常),则 displayMode 似乎更改为.twoDisplaceSecondary,并且第三列被推离屏幕而不是被压扁。

我想我可以通过viewWillTransitionToSize()方法管理方向更改,但我一直无法找到委托或其他方式来检测应用程序何时变窄,但仍然具有.regular水平尺寸类,如联系人应用程序,似乎能够做到.

显示我所引用内容的屏幕截图: 带有三列,全屏宽度的联系人应用程序 多任务处理中的联系人应用程序,第 3 列,已移位

您可以在第二个屏幕截图中看到,当空间不足时,第 3 列被置换而不是被压扁。

ipad uisplitviewcontroller ios swift ios14

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