1.viewcontroller
.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
- ( void )viewdidload {
[super viewdidload];
uibutton *button = [uibutton buttonwithtype:uibuttontypecustom];
button.backgroundcolor = [uicolor lightgraycolor];
button.frame = cgrectmake(10, 100, 60, 30);
[button addtarget:self action:@selector(buttonclick) forcontrolevents:uicontroleventtouchupinside];
[self.view addsubview:button];
self.navigationcontroller.delegate = self;
}
- ( void )buttonclick{
///跳转到kkviewcontroller
[self performseguewithidentifier:@ "pusht" sender:nil];
}
|
头部代理
1
|
@interface viewcontroller ()<uinavigationcontrollerdelegate>
|
代理方法
1
2
3
4
5
6
7
8
9
10
|
- ( void )navigationcontroller:(uinavigationcontroller *)navigationcontroller willshowviewcontroller:(uiviewcontroller *)viewcontroller animated:( bool )animated {
[self.navigationcontroller setnavigationbarhidden: [self hiddenbarvc: viewcontroller] animated: animated];
}
- ( bool )hiddenbarvc:(uiviewcontroller *)viewcontroller {
bool needhidenaivgaionbar = no;
if ([viewcontroller iskindofclass: [kkviewcontroller class ]]) {
needhidenaivgaionbar = yes;
}
return needhidenaivgaionbar;
}
|
2.kkviewcontroller(目标viewcontroller)
新建一个kkviewcontroller
.h
1
|
@property (nonatomic,strong) id popdelegate;
|
.m
1
2
3
4
5
6
7
8
9
10
11
12
13
|
- ( void )viewdidload {
[super viewdidload];
self.title = @ "第二个页面" ;
[self popset];
}
- ( void )popset{
_popdelegate = self.navigationcontroller.interactivepopgesturerecognizer.delegate;
sel action = nsselectorfromstring(@ "handlenavigationtransition:" );
uipangesturerecognizer *poppangesture = [[uipangesturerecognizer alloc] initwithtarget:self.popdelegate action:action];
poppangesture.maximumnumberoftouches = 1;
poppangesture.delegate = self;
[self.view addgesturerecognizer: poppangesture];
}
|
头部代理
1
|
@interface kkviewcontroller ()<uigesturerecognizerdelegate>
|
手势代理方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
- ( bool )gesturerecognizershouldbegin:(uipangesturerecognizer *)gesturerecognizer{
///【下面两个方法写一个】
///全屏拖动
cgpoint tragpoint = [gesturerecognizer translationinview:gesturerecognizer.view];
if (tragpoint.x <= 0){
return no;
}
else {
if (self.navigationcontroller.viewcontrollers.count <= 1){
return no;
}
else {
return yes;
}
}
// ///局部允许拖动
// cgpoint tragpoint = [gesturerecognizer locationinview:gesturerecognizer.view];
// nslog(@"x=%f;y=%f",tragpoint.x,tragpoint.y);
// if (tragpoint.x > 60){///拖动的范围
// return no;
// }
// else{
// if (self.navigationcontroller.viewcontrollers.count <= 1) {
// return no;
// }
// else{
// return yes;
// }
// }
}
|
效果图
总结
以上所述是小编给大家介绍的ios 导航栏无缝圆滑的隐藏 navigationbar,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/wangkejia/archive/2017/11/17/7852934.html