iOS UI NavigationController UINavigationBar UINavigationItem
2015-12-10 11:10
495 查看
大家做一些App应用时,很多时候会用到UINavigationController。下面我简单谈谈,欢迎指正:
1.使用UINavigationController:
<p class="p1"><span class="s1">ViewController</span><span class="s2"> *vc=[[</span><span class="s1">ViewController</span><span class="s2"> </span><span class="s3">alloc</span><span class="s2">]</span><span class="s3">init</span><span class="s2">];</span></p><p class="p2"><span class="s1">UINavigationController</span><span class="s2"> *navVc=[[</span><span class="s1">UINavigationController</span><span class="s2"> </span><span class="s3">alloc</span><span class="s2">]</span><span class="s3">initWithRootViewController</span><span class="s2">:vc];</span></p><p class="p2"><span class="s4">self</span><span class="s2">.</span><span class="s5">window</span><span class="s2">.</span><span class="s1">rootViewController</span><span class="s2">=navVc;</span></p>
2.自定义UINavigationController,用于整个项目界面风格的统一控制
5.如果想在导航栏放自己想要放的东西:
1.使用UINavigationController:
<p class="p1"><span class="s1">ViewController</span><span class="s2"> *vc=[[</span><span class="s1">ViewController</span><span class="s2"> </span><span class="s3">alloc</span><span class="s2">]</span><span class="s3">init</span><span class="s2">];</span></p><p class="p2"><span class="s1">UINavigationController</span><span class="s2"> *navVc=[[</span><span class="s1">UINavigationController</span><span class="s2"> </span><span class="s3">alloc</span><span class="s2">]</span><span class="s3">initWithRootViewController</span><span class="s2">:vc];</span></p><p class="p2"><span class="s4">self</span><span class="s2">.</span><span class="s5">window</span><span class="s2">.</span><span class="s1">rootViewController</span><span class="s2">=navVc;</span></p>
跳转到下一个控制器:<p class="p1"><span class="s1">[</span><span class="s2">self</span><span class="s1">.navigationController pushViewController:下一个控制器 animated:</span><span class="s2">YES</span><span class="s1">];</span></p>
2.自定义UINavigationController,用于整个项目界面风格的统一控制
//设置导航栏的主题 +(void)setupNavBarTheme { //1.去除apperance对象 UINavigationBar *navBar=[UINavigationBar appearance]; navBar.tintColor = [UIColor whiteColor]; [navBar setBarTintColor:[UIColor blackColor]]; navBar.translucent = YES; //2.设置标题属性 NSMutableDictionary *textAttrs=[NSMutableDictionary dictionary]; textAttrs[NSForegroundColorAttributeName]=[UIColor whiteColor]; textAttrs[NSFontAttributeName]=[UIFont systemFontOfSize:18]; textAttrs[UITextAttributeTextShadowOffset]=[NSValue valueWithUIOffset:UIOffsetZero]; textAttrs[UITextAttributeFont]=[UIFont boldSystemFontOfSize:20]; [navBar setTitleTextAttributes:textAttrs]; //去掉导航栏但会按钮自带的文字 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; } //设置导航栏按钮主题 +(void)setupBarButtonItemTheme { UIBarButtonItem *item=[UIBarButtonItem appearance]; //设置文字属性 NSMutableDictionary *textAttrs=[NSMutableDictionary dictionary]; textAttrs[UITextAttributeTextColor]=[UIColor whiteColor]; textAttrs[UITextAttributeTextShadowOffset]=[NSValue valueWithUIOffset:UIOffsetZero]; textAttrs[UITextAttributeFont]=[UIFont systemFontOfSize:16]; [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; [item setTitleTextAttributes:textAttrs forState:UIControlStateHighlighted]; }3.如果对苹果系统自带的返回按钮不满意,想用自己的返回按钮(我以图片按钮为例)
UIButton *leftButton=[[UIButton alloc]init]; [leftButton setImage:[UIImage imageNamed:@"ct_icon_leftbutton"] forState:UIControlStateNormal]; leftButton.frame=CGRectMake(0, 0, 25, 25); [leftButton setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)]; [leftButton addTarget:self action:@selector(leftBtnClicked) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftItem=[[UIBarButtonItem alloc]initWithCustomView:leftButton];
<p class="p1"><span class="s1"> </span><span class="s2">self</span><span class="s1">.</span><span class="s3">navigationItem</span><span class="s1">.</span><span class="s3">leftBarButtonItem</span><span class="s1"> = leftItem;</span></p>4.自定义返回按钮会失去系统自带的从左往右,从右往左切换效果。要想实现:<pre name="code" class="objc">- (void)leftBtnClicked
{ for (UIViewController *controller in self.navigationController.viewControllers)
{ if ([controller isKindOfClass:[上一个控制器 class]])
{ [self.navigationController popToViewController:controller animated:YES]; } } }上面代码也可以实现从一个控制器返回上上个控制器,而不是上一个控制器。
5.如果想在导航栏放自己想要放的东西:
- (void)setNaviBarItemButton{ UILabel *titleView=[[UILabel alloc]init]; [titleView setText:@"家居"]; titleView.frame=CGRectMake(0, 0, 100, 16); titleView.font=[UIFont systemFontOfSize:16]; [titleView setTextColor:[UIColor whiteColor]]; titleView.textAlignment=NSTextAlignmentCenter; self.navigationItem.titleView=titleView; UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"删除" style:UIBarButtonItemStyleDone target:self action:@selector(rightBtnClicked)]; UIButton *leftButton=[[UIButton alloc]init]; [leftButton setImage:[UIImage imageNamed:@"ct_icon_leftbutton"] forState:UIControlStateNormal]; leftButton.frame=CGRectMake(0, 0, 25, 25); [leftButton setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)]; [leftButton addTarget:self action:@selector(leftBtnClicked) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *leftItem=[[UIBarButtonItem alloc]initWithCustomView:leftButton]; rightButton.tintColor = [UIColor whiteColor]; self.navigationItem.rightBarButtonItem = rightButton; self.navigationItem.leftBarButtonItem = leftItem; }
相关文章推荐
- Druid是什么以及用StatViewServlet用于展示Druid的统计信息
- IOS开发之 ---- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
- 使用UITouch隐藏UITextField/UITextView输入键盘的方法-iOS开发
- druid简单教程
- UESTC 250 windy数 数位dp
- Installation failed with message INSTALL_FAILED_UID_CHANGED.--APK安装失败解决方法
- ExecuteNonQuery引发了System.ArgumentException类型异常
- UIGraphicsBeginImageContext UIGraphicsGetImageFromCurrentImageContext 压缩,修改,截取图片
- Assembly x64 Intro - GAS Assembly Issue
- Volley的高级用法(自定义Request)
- ueditor .NET版本提示uploader、Config类同时存在于两个dll中
- 【转载】Understand the serialVersionUID
- you need MySQL built with 'InnoDB' to have IT working
- saxbuilder用法
- Android之如何解决popupWindow(pw.setFocusable(true))按返回键和menu键退出
- iOS自定义UITabBar的几种方法
- UIScrollView的常用属性和方法
- cannot assign value of type
- you need MySQL built with 'InnoDB' to have IT working
- ios中常见的几种控件.(UISlider,UISwitch,UIStepper,UISegmentedControl)