Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从大标题页过渡到小标题页时会出现导航间隙_Ios_Swift_Uinavigationbar_Uinavigationcontroller - Fatal编程技术网

Ios 从大标题页过渡到小标题页时会出现导航间隙

Ios 从大标题页过渡到小标题页时会出现导航间隙,ios,swift,uinavigationbar,uinavigationcontroller,Ios,Swift,Uinavigationbar,Uinavigationcontroller,从大标题页滑动到小标题页时出现导航间隙! 请确保,您只需选中从情节提要中选择的半透明 输入这样的代码 override func viewWillAppear(_ animated: Bool) { if #available(iOS 11.0, *) { self.navigationController?.navigationBar.prefersLargeTitles = true self.navigationController?.naviga

从大标题页滑动到小标题页时出现导航间隙!

请确保,您只需选中从情节提要中选择的半透明

输入这样的代码

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
    }
}
Outout:


视图的布局从导航栏的底部开始。当从大标题页过渡到小标题页时,导航栏变短,然后出现导航间隙

要解决此问题,控制器视图的布局应该从屏幕的零点开始,其子视图的布局应该从导航栏的底部开始,以防被覆盖

两个属性可以影响布局:半透明edgesForExtendedLayout。 半透明属性应设置为“是”,或在任何地方删除它(默认值为“是”)。 edgesForExtendedLayout属性应设置为UIRectEdgeAll,或在任何地方将其删除(其默认值为UIRectEdgeAll)

对于UITableViewController的页面,它将自动调整到导航栏(tableview的adjustedContentInset将更改,前提是将contentInsetAdjustmentBehavior设置为UIScrollViewContentInsetAdjustmentAutomatic,或删除该设置),任何其他代码都不应更改

对于UIViewController,主视图的子视图应将其布局调整到导航栏的底部。示例代码如下:

-(void)ViewDidLayoutSubView
{
[超级视图布局子视图];
self.searchBgTopLayoutConstraint.constant=正常状态和导航条高度;
#最顶部视图的顶部约束
}
如果子视图的第一个视图(A)继承自UIScrollView,则大标题将根据A的滚动而更改。详情请参阅

如果最上面的视图继承自UIScrollView,如mainTableView,则可以将其布局从零点开始设置,并将其contentInset设置为导航栏的底部。它看起来像一个UITableViewController,当mainsTableView滚动时,导航栏会改变,没有任何空白。示例代码如下:

-(void)ViewDidLayoutSubView
{
[超级视图布局子视图];
self.mainTableView.contentInset=UIEdgeInsetsMake(正常状态和导航条高度,0,0,0);
}