iOS navigationbar的高度可以修改吗
1个回答
展开全部
UINavigationBar高度苹官SDK固定44点实际项目我却能遇情况图:
UINavigationBar高度达84点需要我自定义系统自带UINavigationBar高度系统并没直截调整NavigationBarHeight于我进行尝试
需要进行调整ViewController类ViewWillApplear self.navigationController.navigationBarframe进行赋值其frame.size.height变我 需要新高度(本例84)ViewWillDisappearframe再改
注:代码写ViewWillAppear/DisAppear面原根据自定义高度UINavigationBar某 界面现所UINavigationBar高度统没必要写需要写第现ViewController ViewDidLoad消息面
代码:
1
2
3
4
5
6
7
8
9
10
11
- ( void ) viewWillAppear : ( BOOL ) animated {
[ super viewWillAppear :animated ] ;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 84 ) ;
}
- ( void ) viewWillDisappear : ( BOOL ) animated {
[ super viewWillDisappear :animated ] ;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 44 ) ;
}
OK运行UINavigationBar高度确发变化事情愉快解决等等导航栏标题返按钮位置却都贴面图:
发我知道现明显需要我调整两UIViewframe向移40点要添加其控件留空间简单吧
数……
我靠些货特根本UIView嘛
返按钮UIBarButtonItem继承自UIBarItemUIBarItem继承自NSObject标题更悲剧 默认使用ViewControllertitle属性做标题(本例)self.navigationItem.titleView值 nil更改nilframe事情发
期间我试各种非手段找包括遍历UINavigationBarview hierarchy(视图层级)试图使用UIBarButtonItem私变量尝试修改UIBarButtonItem CustomView.frame等……都功返
始Google搜索StackOverflow片找SO神云集问题解答相高
答案基本2种:
1、用系统NavigationBar啦咱自定义啦重载layoutSubView面云云
2、简单我写NavigationBar类(Category)面加消息xxx
菜我看自定义控件神马立即给外爷跪Category更没用……其实我需要更改两控件高度已用用暴力
于我始查文档终于我找面两消息:
UINavigationBar:
- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the title’s vertical position adjustment for given bar metrics. 调整某BarMetrics(知道翻译)标题垂直位置
UIBarButtonItem:
- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the background vertical position offset for given bar metrics.This offset is used to adjust the vertical centering of bordered bar buttons within the bar. 调整某BarMetrics(知道翻译)背景垂直位置偏差值偏差值用调整该圆角按钮垂直Bar内位置
OhMyGod终于找组织赶紧试刚才ViewControllerViewWillAppear消息再加两句:
1
2
[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;
[ self . navigationItem . leftBarButtonItem setBackgroundVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;
注:使用leftBarButtonItem我使用自定义图片返按钮leftBarButton替代backBarButton
要忘ViewWillDisappear候再标题位置调整标题跳屏幕;另面返按钮却用设置两行代码作用机制返按钮前ViewController关:
1
[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : 0.0 forBarMetrics : UIBarMetricsDefault ] ;
运行结:
太棒啦终于功标题返按钮垂直位置按照我设置向移40点
面事情简单按照设计湿GG或者设计师MM要求相应UI控件加self.navigationController.navigationBar收工
注:述运行结前提使用自定义图片leftBarButtonItem作返按钮替代系统默认 backBarButtonItem并且leftBarButtonItem使用 initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action创建(原我面讲)换句说ViewController或者父类 ViewDidLoad应该类似面两行代码:
1
2
UIBarButtonItem * item = [ [ UIBarButtonItem alloc ] initWithImage : [ UIImage imageNamed : @ 某图片名" ] style : UIBarButtonItemStyleBordered target : self action : @ selector ( 某名 ) ] ;
self . navigationItem . leftBarButtonItem = item ;
需求刚能用解决恭喜菜能拿干货面全困惑……orz
做iOS Level1菜鸟费劲终于找问题解决欣喜肯定想瑟必于飘飘乎想相关研究研究搞通用解决案于噩梦始……
N毛解决案没搞却搞问题……
问题1:系统默认导航栏返按钮垂直位置调节
返按钮使用系统默认backBarButtonItem候使用UIBarButtonItem- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics调整垂直位置起作用
我进行各种尝试backBarButtonItem直nil文档说根据ViewControllertitle属 性创建按钮我找机调整执行面消息更准确问题能图消息底应该用才能看效呢
问题2:自定义返按钮导航栏垂直位置仅某种情况调节
我发现即使用系统默认返按钮使用自定义leftBarButtonItem使用 initWithImage:style target:action:创建UIBarButtonItem效使用其init情况律效至于原明觉厉
UINavigationBar高度达84点需要我自定义系统自带UINavigationBar高度系统并没直截调整NavigationBarHeight于我进行尝试
需要进行调整ViewController类ViewWillApplear self.navigationController.navigationBarframe进行赋值其frame.size.height变我 需要新高度(本例84)ViewWillDisappearframe再改
注:代码写ViewWillAppear/DisAppear面原根据自定义高度UINavigationBar某 界面现所UINavigationBar高度统没必要写需要写第现ViewController ViewDidLoad消息面
代码:
1
2
3
4
5
6
7
8
9
10
11
- ( void ) viewWillAppear : ( BOOL ) animated {
[ super viewWillAppear :animated ] ;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 84 ) ;
}
- ( void ) viewWillDisappear : ( BOOL ) animated {
[ super viewWillDisappear :animated ] ;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 44 ) ;
}
OK运行UINavigationBar高度确发变化事情愉快解决等等导航栏标题返按钮位置却都贴面图:
发我知道现明显需要我调整两UIViewframe向移40点要添加其控件留空间简单吧
数……
我靠些货特根本UIView嘛
返按钮UIBarButtonItem继承自UIBarItemUIBarItem继承自NSObject标题更悲剧 默认使用ViewControllertitle属性做标题(本例)self.navigationItem.titleView值 nil更改nilframe事情发
期间我试各种非手段找包括遍历UINavigationBarview hierarchy(视图层级)试图使用UIBarButtonItem私变量尝试修改UIBarButtonItem CustomView.frame等……都功返
始Google搜索StackOverflow片找SO神云集问题解答相高
答案基本2种:
1、用系统NavigationBar啦咱自定义啦重载layoutSubView面云云
2、简单我写NavigationBar类(Category)面加消息xxx
菜我看自定义控件神马立即给外爷跪Category更没用……其实我需要更改两控件高度已用用暴力
于我始查文档终于我找面两消息:
UINavigationBar:
- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the title’s vertical position adjustment for given bar metrics. 调整某BarMetrics(知道翻译)标题垂直位置
UIBarButtonItem:
- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the background vertical position offset for given bar metrics.This offset is used to adjust the vertical centering of bordered bar buttons within the bar. 调整某BarMetrics(知道翻译)背景垂直位置偏差值偏差值用调整该圆角按钮垂直Bar内位置
OhMyGod终于找组织赶紧试刚才ViewControllerViewWillAppear消息再加两句:
1
2
[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;
[ self . navigationItem . leftBarButtonItem setBackgroundVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;
注:使用leftBarButtonItem我使用自定义图片返按钮leftBarButton替代backBarButton
要忘ViewWillDisappear候再标题位置调整标题跳屏幕;另面返按钮却用设置两行代码作用机制返按钮前ViewController关:
1
[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : 0.0 forBarMetrics : UIBarMetricsDefault ] ;
运行结:
太棒啦终于功标题返按钮垂直位置按照我设置向移40点
面事情简单按照设计湿GG或者设计师MM要求相应UI控件加self.navigationController.navigationBar收工
注:述运行结前提使用自定义图片leftBarButtonItem作返按钮替代系统默认 backBarButtonItem并且leftBarButtonItem使用 initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action创建(原我面讲)换句说ViewController或者父类 ViewDidLoad应该类似面两行代码:
1
2
UIBarButtonItem * item = [ [ UIBarButtonItem alloc ] initWithImage : [ UIImage imageNamed : @ 某图片名" ] style : UIBarButtonItemStyleBordered target : self action : @ selector ( 某名 ) ] ;
self . navigationItem . leftBarButtonItem = item ;
需求刚能用解决恭喜菜能拿干货面全困惑……orz
做iOS Level1菜鸟费劲终于找问题解决欣喜肯定想瑟必于飘飘乎想相关研究研究搞通用解决案于噩梦始……
N毛解决案没搞却搞问题……
问题1:系统默认导航栏返按钮垂直位置调节
返按钮使用系统默认backBarButtonItem候使用UIBarButtonItem- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics调整垂直位置起作用
我进行各种尝试backBarButtonItem直nil文档说根据ViewControllertitle属 性创建按钮我找机调整执行面消息更准确问题能图消息底应该用才能看效呢
问题2:自定义返按钮导航栏垂直位置仅某种情况调节
我发现即使用系统默认返按钮使用自定义leftBarButtonItem使用 initWithImage:style target:action:创建UIBarButtonItem效使用其init情况律效至于原明觉厉
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询