iOS11导航栏适配

来源:互联网 发布:巨人网络有哪些手游 编辑:程序博客网 时间:2024/06/05 21:07

部分总结;


(一)导航栏高度的变化

(1) iOS11之前导航栏默认高度为44pt(这里高度指NavigationBar);

(2) iOS11之后如果设置了大标题样式,则为96pt,默认情况下还是44pt;

(3) 但在iPhoneXstatusBar20pt变成了44pt,所以iPhoneX上高度(statusBar + NavigationBar)变为88pt,如果项目里隐藏了导航栏加了自定义按钮之类的,这里需要注意适配一下。


if (@available(iOS11.0, *)) {

            //iOS11之后

            

            //导航大标题,上滑到顶部时动态切换大小标题样式 (导航栏高度UINavigationBar = 44/96)

            self.navigationController.navigationBar.prefersLargeTitles = YES;

            //自动模式,依赖于上一个item的设置;上一个item设置为自动并且当前导航栏prefersLargeTitles=YES,则显示大标题样式;

            self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;

//            //prefersLargeTitles=YES,滚动到顶部时,当前总是显示大标题样式

//            self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;

//            //prefersLargeTitles=YES,滚动到顶部时,当前也总不会显示大标题样式

//            self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;

            

            //标题样式变化时, btnframe不变

            UIBarButtonItem *item = [[UIBarButtonItemalloc] initWithTitle:@"设置"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(testDidClick)];

            self.navigationItem.rightBarButtonItem = item;

            

            //标题样式变化时, btnframe不变

            UIBarButtonItem *item1 = [[UIBarButtonItemalloc] initWithTitle:@"返回"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(testDidClick)];

            self.navigationItem.leftBarButtonItem = item1;

            

            //titleView

            

        } else {

            // Fallback on earlier versions

            

            //titleView


            

        }



(二) 导航栏图层及对titleView布局的影响

iOS11之后titleView层级发生了变化, 具体如图展示:



原创粉丝点击