iOS11针对使用自定义导航条的适配想法

开发场景说明

App开发中NavgationController的使用基本上是属于标配的一个控件,当然可能也有App不适用,这里不做这方面的展开讨论,文章主要针对的是iOS11下使用自定义NavgationBar的一个适配想法。下面我会具体说明下我这边自定义NavgationBar的实现方式。

目前在项目中由于自己使用习惯或者说是想达到某些特定业务效果情况下,我习惯是把系统的NavgationBar给setHidden=YES。也是为了方便页面在各种场景(有无NavgationBar)的切换不会产生异常的展示效果。


正文

前景基本交代这么多,如果有更好的方式希望大家也沟通下,因为个人工作缘故好久没有做UI相关的开发工作,所以此处只是自己在某些场景下的一些实现想法。针对不同业务或者功能场景也有更适合的设计和实现策略。大家可以在评论处留言讨论下。

下面是我创建页面的一个简单的代码实现,大家可以参考的看,方便后面理解场景。

#import "MainViewController.h"

@interface AppDelegate ()

@property (strong, nonatomic) UINavigationController *navgationController;

@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

MainViewController * mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];

self.navgationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];

[self.navgationController setNavigationBarHidden:YES];

_window.rootViewController = self.navgationController;

[_window makeKeyAndVisible];

return YES;

}

OK,上面代码创建一个NavgationController包裹的主视图,这也是为了之后方便Push其他页面。这是项目的一个主的Navgation栈,后面一些场景也可以针对性的去presentViewController一个类同带NavgationController的支线视图控制器,然后继续自己的支线Push操作等。

回到正题,下面说下我这边自定义NavgationBar的一个实现。


自定义NavgationBar的一个示意图

好吧,我其实就是放了一个View,当然你可以手写代码在BaseViewController实现。但是我是重度Xib患者,基本上习惯这种所见即所得的方式,针对业务功能改变也觉得快速一些。仅仅是个人一个癖好。

这个视图在正常非iPhone X之前其实是没有问题的,设置好约束会自动适配各种正常矩形屏幕的展示,但是iPhone X的刘海的出现还是有些问题的。


留海挡住了导航条

因为是Xib其实当时考虑就是不同页面导航条的展示可能会有不同,通过加一个相同的容器View,你可以自己在Xib上实现不同的样式的导航条,当然代码也可以实现,在这里不做辩论噢。

我这边想到的一个适配方式就是让这个自定义的导航条View继承自一个自己的Class。然后在根据设备去判断更新他的约束。


设置导航条View的Class

然后在这个自定义的View下去实现一些对设备的简单判断。

#define kDeviceStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height

@implementationCCNavgationBarView

- (void)awakeFromNib{

   [super awakeFromNib];

   //针对iPhone X做处理

   if(kDeviceStatusBarHeight>20) {

   }

}

@end

当然这个判断其实不严谨,打电话的时候这个高度其实也不是20,后续可以完善,这边只是一个实现🌰。我们下面继续。

当然做到这之后就需要针对这个留海设备去做约束的处理了。我们在这个自定义View的头文件声明两个属性,主要是针对不同产品策略做不同修改用。

@property(weak,nonatomic)IBOutletNSLayoutConstraint*topConstraint;

@property(weak,nonatomic)IBOutletNSLayoutConstraint*heightConstraint;

字面上应该就能理解的。我这边就不做解释了,毕竟是简单的驼峰式英文命名。这时候我们回答Controller的Xib视图,做下关联。


Xib关联自定义View的约束属性

我们再回到自定义View的刚才实现的if判断代码中增加一行。

self.heightConstraint.constant+=kDeviceStatusBarHeight;

OK,再次运行效果。


修改之后的样式

以上,就是一个场景做适配的基本想法。

不喜可以轻喷~感谢您抽空看到这一行~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容