关于导航栏之不用代码实现侧滑

关于导航栏,先来看一张用storyboard拖出来的item

大家可以看得到.这个就是我们每天都在用的东西,很熟悉吧? 请用代码实现一下吧.

当时心里那个叫轻视,可是做起来的时候发现,跟预期的简单往往不是那么一回事.

 创建一个UINavigationBar

UINavigationBar *bar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 80)];

[self.view addSubview:bar];

我们可以设置导航栏的风格属性,从iOS6之后,UINavigationBar默认为半透明的样式下面就是官方的api 

现在只有两个可以用的了.

UIBarStyleDefault          = 0,//默认

UIBarStyleBlack            = 1,//黑色默认是YES,如果设置成YES ,放了一副不透明的图,那么效果是自动会把这个图弄成半透明;

如果设置成NO,放了一副半透明的图,

如果barstyle是UIBarStyleBlack,效果是半透明的图自动加上黑色背景

如果barstyle是UIBarStyleDefault,效果是半透明的图自动加上白色背景

如果设置了barTintColor,效果是半透明的图自动加上barTintColor的背景


默认是YES,如果设置成YES ,放了一副不透明的图,那么效果是自动会把这个图弄成半透明;默认是YES,如果设置成YES ,放了一副不透明的图,那么效果是自动会把这个图弄成半透明;

如果设置成NO,放了一副半透明的图,

如果barstyle是UIBarStyleBlack,效果是半透明的图自动加上黑色背景

如果barstyle是UIBarStyleDefault,效果是半透明的图自动加上白色背景

如果设置了barTintColor,效果是半透明的图自动加上barTintColor的背景

如果设置成NO,放了一副半透明的图,

说一下用代码是怎么加item的吧.

核心代码 

UIButton *cancel = [UIButton hm_buttonWithTitle:@"左item" fontSize:18 textColor:[UIColor whiteColor]];

[cancel addTarget:self action:@selector(cancelAction:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithCustomView:cancel];

self.navigationItem.leftBarButtonItem = left;

self.title = @"TitleView";

隐藏tabBar

一句代码隐藏

    self.navigationController.toolbarHidden = NO;

在说点有趣的事情

scrollView 的偏移 整体偏移64 相信大家都有遇到过吧? 别告诉我说没有.

之前,也是一直迷迷糊糊的.直到我在浏览博客的时候,无意中发现如下,

extendedLayoutIncludesOpaqueBars

automaticallyAdjustsScrollViewInsets

edgesForExtendedLayout

上面这个三个属性是什么鬼? 中间那个我好像有用到过.那么迷糊就对了.下面是三个属性的解释

           首先要提到iOS6和iOS7的差异,在iOS6中,默认布局是忽略了navigationBar以及tabBar所占的位置,在中间布局;但是iOS7中,默认布局是撑满整个屏幕的,也就是说view的顶部64像素以及底部49像素是分别被navigationBar和TabBar所遮挡的。于是,苹果提供了几个API供我们使用:

       automaticallyAdjustsScrollViewInsets 默认值YES: 从名字上看就非常的直观,比如一个tableView的布局撑满了整个屏幕时,这个属性会自动设置contentInset以避免内容被遮挡,在一个有导航栏的view上添加的第一个scrollView的内容会自动向下偏移64个像素。

           edgesForExtendedLayout 默认值UIRectEdgeAll:默认即布局时撑满屏幕,如果设置为None就与iOS6时期的布局一样。

      extendedLayoutIncludesOpaqueBars 默认值NO:产生bug的关键就在于这个属性,先看他的意思,询问当遇到不透明的bar时是否延伸布局,默认为NO,导航栏设置了完全不透明的图片作为背景,当再次返回的时候,界面重新布局,导致整体向下偏移64个像素 。

总结一下,无非就是ios6 跟iOS7的差异.理解就好,如果不明白回头再看.

部分内容参考自博客  点击浏览 

在看一个效果


因为这个截屏软件的愿意不是很溜 :

用一句话来说就是,不用一行代码 实现侧滑功能!

很溜是吧?那让我来讲下原理呗?

其实大家想一想,侧滑很无非就是清扫的时候,push一个界面对不对?

使用runtime在Load方法里交换苹果原声api的

self.navigationController pushViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#>

这个方法 在自己定义一个委托Delegate,继承自NSObject元类,遵守UIGestureRecognizerDelegate 协议,实现- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer 方法

在使用Method消息转发机制 利用runtime截取apiclass_getInstanceMethod 交换两个方法的实现.

懵逼不?简单不?哈哈哈,那么我说人话.

那么如果用自己定义一个手势方法跟系统的Push方法进行交换,在我用手势的时候把系统的push方法给替换掉不就可以?

想实现,其实写都不用写,我已经上传到github 大家直接点start 点赞下载就好 

点击下载

介绍下自己的小框架吧,里面有各种各样的语法糖 看到这个没有


这里有一个文本输入框 ,里面有占位图片,占位文字.手打很麻烦吧?

看下实现吧


在给你溜一个.


如果有心人,可以看到,这些都是分类,分类.意味着,你导入Pch文件中,你不需要继承任何类,没有一点侵略性.

天色一晚.还有很多很多想和你们分享.如果满意还请给我点个赞.支持下~~~指尖猿

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

推荐阅读更多精彩内容