smilezxlee / zxnavigationbar Goto Github PK
View Code? Open in Web Editor NEW灵活轻量的自定义导航栏,导航栏属于控制器view,支持导航栏联动,一行代码实现【导航栏背景图片设置、导航栏渐变、折叠、修改Item大小和边距、自定义导航栏高度、全屏手势返回、pop拦截、仿系统导航栏历史堆栈】等各种效果
License: MIT License
灵活轻量的自定义导航栏,导航栏属于控制器view,支持导航栏联动,一行代码实现【导航栏背景图片设置、导航栏渐变、折叠、修改Item大小和边距、自定义导航栏高度、全屏手势返回、pop拦截、仿系统导航栏历史堆栈】等各种效果
License: MIT License
我看标题是可以正常响应的,但是leftBtn和rightBtn会很奇怪,有的时候能响应,有的时候不能响应。
self.zx_navStatusBarStyle = ZXNavStatusBarStyleLight; 在当前控制器,不管事,怎么解决???
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
下边这种方法也不管事,还是黑色的,不知道为什么?
请问侧滑返回能增加像系统导航那种渐变吗?现在侧滑效果有点硬邦邦的
我baseController继承ZXNavigationBarController
然后隐藏导航栏
(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.zx_hideBaseNavBar = YES;
}
(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.zx_hideBaseNavBar = NO;
}
masonry布局为
[self.view addSubview:self.tableView];
[_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(UIEdgeInsetsMake(kNavStatusBar, 0, kTabBarHeight, 0));
}];
其中kNavStatusBar打印为44 但是运行结果tableView.top 为0
我看到你有设置ZXNavigationBarTableViewController,继承了之后,tableview的表头会计算成没有导航栏,会在 ZXNavigationBar的下面。
这个可以处理一下吗 navi和vc继承本库
设置了该属性后无效、还是全局返回的手势、viewcontroller和navcontoller都继承了ZX
如何支持tableViewController呢? 一些页面想在storyBoard上直接用TableViewController的静态cell画UI,没办法继承作者的ZXNavigationBarController,能否扩展一下?
在controller上使用Masonry布局的view上移了导航栏加状态栏高度,没有使用XIB。请问改怎么设置。如果在界面上隐藏ZXNavigationBar是正常。反之就不正常。
@return 是否是刘海屏
*/
#define ZXIsBangScreen ({
int cFlag = 0;
if (@available(iOS 11.0, *)) {
if ([UIApplication sharedApplication].delegate.window.safeAreaInsets.top == 44) {
cFlag = 1;
}else{
cFlag = 0;
}
}else{
cFlag = 0;
}
cFlag;
})
我测试的手机是iphone 11 pro max 你这个宏定义获取到的状态栏高度是20,实际高度应该是44
//加这一行代码即可解决ScrollView与侧滑返回手势冲突问题
//[self zx_setPopGestureCompatibleScrollView:self.pageController.downSc];
__weak typeof(self) weakSelf = self;
self.zx_popGestureShouldRecognizeSimultaneously = ^BOOL(UIGestureRecognizer * _Nonnull otherGestureRecognizer) {
if(weakSelf.pageController.downSc.contentOffset.x <= 0){
return YES;
}
return NO;
};
这个代码加了没效果。
如题..
继承UIViewController 的时候没问题..
继承ZXNavigationBarController后, PYSearch页面是空白的..
PYSearch可以在github上搜索
手势侧滑慢慢向右滑动,等滑动到最右边的时候 会出现系统导航栏突然闪烁一下
因为项目要适配阿拉伯语言,全都是镜像,页面都是反的
NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithString:@"剩余时间00:45"];
att.yy_font = [UIFont systemFontOfSize:14];
[att yy_setColor:KRGBColor(0xFF3C3C) range:NSMakeRange(4, 5)];
[self.zx_navRightBtn setAttributedTitle:att forState:UIControlStateNormal];
在iOS10.3的系统上,右按钮大概率位置不对,但是在设置完右按钮文字或图片后,再次设置zx_navItemMargin, 这个问题得以解决。在iOS高版本上没发现有这个问题。
我去,我一直以为iPad上面也是44的高度呢,它竟然是50。。
完犊子了,那我之前的项目岂不是也要炸锅....
大佬,能不能考虑一下iPad上的适配啊,[拜托了],我先去做适配去了
基本情况:静态表格,设置个tableHeaderView,在单元格中放置一个或几个textView。当textView输入文字产生换行时,顶部导航栏高度计算就会出问题,会延伸覆盖tableHeaderView。是在storyboard中设置的。应该区别不大。
现在返回按钮触发率很低..
可不可以在图片不变形的情况下,增大触发面积
谢谢
将HEBaseViewController 继承ZXNavigationBarController,我再基类里定义返回按钮图片, self.zx_backBtnImageName = @"back_black",所有的顶层ViewController都会显示返回按钮。
设置返回按钮默认图片应该也需要加入这个判断 if(self.navigationController && self.navigationController.viewControllers.count > 1)
UIView+ZXNavFrameExtension这个分类里面的方法建议加上前缀zx_
。
想加白名单直接过滤掉不用的vc,要是能做到直接前缀就更好,旧项目用到了云信的uikit的框架,里面有不少vc又不想改源码,作者大大有没有简单的方法
我看到只有跟随ScrollView设置导航栏透明度效果,我尝试自定义导航栏透明无效,有什么方法能直接设置导航栏透明吗?
在sb中设置两个tableview顶部到导航栏下方,貌似只计算了第一个tableview的安全距离。你这个有多个滚动容器的时候容易出问题。
目前使用的是xcode12.2 iPhone 12 mini 模拟器出现的情况
按照以往常规的计算就是用状态栏高度加上NavigationBar固定44的高度来获取上面总的高度
示例代码
STATUSBAR_HEIGHT = [UIApplication sharedApplication].statusBarFrame.size.height
NAVBAR_HEIGHT = 44.0f
STATUSBAR_NAVBAR_HEIGHT = STATUSBAR_HEIGHT + NAVBAR_HEIGHT;
经过测试除了iPhone 12 mini 模拟器的高度有问题,其他的设备正常
目前iPhone 12 mini通过代码计算获取是88的高度,但是我随便新建一个项目工程打印总高度是94,也不知道是不是模拟器bug,因为没有真机暂时无法定位具体问题
这里提供截图和打印信息
BackButtonHandlerProtocol 这个协议,和老项目里有uiviewcontroller的分类的协议名字一样,导致项目报错无法运行,我可以给老项目的协议名更改吗? 改了会有影响吗? 你这在pod 没法改,加个前缀.
位置:ZXNavigationBarController.m
行数:510行和521行
描述:给leftButton和rightButton添加的点击回调赋值给了subRightButton
#pragma mark 设置左侧按钮图片和点击回调
- (void)zx_setLeftBtnWithImg:(UIImage *)img clickedBlock:(nullable leftBtnClickedBlock)clickBlock{
[self.zx_navLeftBtn setImage:img forState:UIControlStateNormal];
((ZXNavigationBar *)self.zx_navBar).zx_subRightBtnClickedBlock = ^(ZXNavItemBtn * _Nonnull btn) {
if(clickBlock){
clickBlock(btn);
}
};
}
#pragma mark 设置右侧按钮图片和点击回调
- (void)zx_setRightBtnWithImg:(UIImage *)img clickedBlock:(nullable leftBtnClickedBlock)clickBlock{
[self.zx_navRightBtn setImage:img forState:UIControlStateNormal];
((ZXNavigationBar *)self.zx_navBzx_subRightBtnClickedBlockck** = ^(ZXNavItemBtn * _Nonnull btn) {
if(clickBlock){
clickBlock(btn);
}
};
}
hello,大佬,我又来了!来一波py交易
需要优化的样式:
复现方法:
在微博demoDemoWeiboHotViewController
中 设置右上角按钮点击跳转到使用系统导航条的页面
[self zx_setRightBtnWithImgName:@"right_more_icon" clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
NSLog(@"点击了最右边的按钮");
Class DemoSystemBarViewController = NSClassFromString(@"DemoSystemBarViewController");
id vc = [DemoSystemBarViewController new];
[self.navigationController pushViewController:vc animated:YES];
}];
看看能不能优化一波。
在控制器里面加了self.zx_hideBaseNavBar = YES;
那么下面的拦截侧滑返回的手势就失效了吗?
//拦截侧滑返回手势和返回按钮点击事件
self.zx_handlePopBlock = ^BOOL(ZXNavigationBarController * _Nonnull viewController, ZXNavPopBlockFrom popBlockFrom) {
//viewController:当前控制器
//popBlockFrom:通过什么方式(点击返回按钮或侧滑返回手势)触发pop操作
//doSomething
//返回YES则代表不禁止pop操作,返回NO则禁止pop操作
@strongify(self);
[self backClick];
return NO;
};
self.zx_navBar.zx_y = 200;发现无法改变zx_navBar的位置
使用自定义导航栏,导航栏下方黑线如何去掉。
ZXNavigationBarDefine.h中的ZXIsBangScreen在iPhoneXR上判断有问题
因为iPhoneXR在iOS14上的safeAreaInsets为48, 0, 34, 0
ViewContorller返回的时候需要回到上上及 或者指定页面,这个怎么处理呀?
导航栏继承与ZXNavigationBarNavigationController
vc继承与ZXNavigationBarController
侧滑返回时有问题
视频链接
https://gitee.com/1264788359/pro/raw/master/2020-10-10%2010.47.39.mp4
请问具体需要怎么操作.谢谢.
(void)viewWillAppear:(BOOL)animated {
self.zx_popGestureCoverRatio = 0.1;
self.zx_handlePopBlock = ^BOOL(ZXNavigationBarController * _Nonnull viewController, ZXNavPopBlockFrom popBlockFrom) {
//viewController:当前控制器
//popBlockFrom:通过什么方式(点击返回按钮或侧滑返回手势)触发pop操作
//doSomething
//返回YES则代表不禁止pop操作,返回NO则禁止pop操作
NSLog(@"");
return NO;
};
}
zx_navLineView
的高度为 1,其实系统的是 0.5,希望这个值可以自己设置。
#pragma mark - 重写父类pop和push相关方法
改为
[super pushViewController:viewController animated:animated];
项目中用到,有时候真的不需要动画....
我新建项目用ZXNavigationBarTableViewController 设置TableViewController无效了。上方导航栏是空白的。普通的ViewController是正常的,而且我打开之前的项目,是正常的。新建项目的代码和用法完全复制之前项目的,只是xcode升级了,不知道你这个版本的代码测试过没有
如果一个ViewController里, 有一个横向移动的UICollectionView, 还有一个UIScrollview分页控制器的话.
如下设置,
[self zx_setPopGestureCompatibleScrollView:self.horizontalView.collectionView];
[self zx_setPopGestureCompatibleScrollView:self.scrollView];
或者
[self zx_setPopGestureCompatibleScrollViews:@[self.horizontalView.collectionView, self.scrollView]];
这样设置的话, 只有最后一个设置手势冲突的UIView,才会支持手势返回.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.