答案 0 :(得分:0)
请确保您只需要检查从情节提要中选择的半透明。
像这样设置代码
override func viewWillAppear(_ animated: Bool) {
if #available(iOS 11.0, *) {
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationItem.largeTitleDisplayMode = .automatic // Change Display Mode
}else{
// Fallback on earlier versions
}
}
缺席:
答案 1 :(得分:0)
视图的布局从导航栏的底部开始。从大标题页面过渡到小标题页面时,导航栏变短,然后出现导航间隙。
要解决此问题,控制器视图的布局应从屏幕的零点开始,子视图的布局应从导航栏的底部开始,以防止被遮盖。
两个属性可以影响布局:半透明和 edgesForExtendedLayout 。 半透明属性应设置为YES,或在各处删除它(默认值为YES)。 EdgeForExtendedLayout属性应设置为UIRectEdgeAll,或将其删除(默认值为UIRectEdgeAll)。
对于UITableViewController的页面,它将自动调整为导航栏(tableview的 adjustedContentInset 会更改,前提是将 contentInsetAdjustmentBehavior 设置为 UIScrollViewContentInsetAdjustmentAutomatic ,或者删除设置),其他任何代码均不得更改。
对于UIViewController,主视图的子视图应将其布局调整到导航栏的底部。示例代码如下,
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.searchBgTopLayoutConstraint.constant = NORMAL_STATUS_AND_NAV_BAR_HEIGHT;
#top constraint of the top most view
}
如果子视图的第一个视图( A )继承自UIScrollView,则大标题将根据 A 的滚动而更改。详细信息可以在Shrink large title when scrolling (not UITableViewController) iOS 11 中找到。
如果最顶部的视图是从UIScrollView继承的,例如 mainTableView ,则可以将其布局设置为从零点开始,并将其 contentInset 设置为导航的底部酒吧。它看起来像UITableViewController,并且滚动 mainsTableView 时导航栏会更改,没有任何空格。示例代码如下,
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.mainTableView.contentInset = UIEdgeInsetsMake(NORMAL_STATUS_AND_NAV_BAR_HEIGHT, 0, 0, 0);
}