UI -- NavigationController 和 navigationbar

从navigationController中的aViewController push到bViewController时:

如果bViewController的leftBarButtonItem!=nil,那么将在navigationBar的左边显示bViewController指定的leftBarButtonItem

如果bViewController的leftBarButtonItem==nil,aViewController的backBarButtonItem!=nil,那么将在navigationBar的左边显示aViewController指定的backBarButtonItem

如果两者都为nil,那么navigationBar的左边将显示系统提供的默认返回按钮。

如果两者都为nil,并且指定bViewController的navigationItem.hidesBackButton=YES,那么navigationBar将隐藏左侧按钮。


自定义navigationbar包括更换背景图片,左右键图片(下面两行代码实现)

    UILabel *topLab=[[UILabelalloc]initWithFrame:CGRectMake(0,0,320,44)];

    topLab.text=@"设置任务";

    topLab.textAlignment=1;

    [topLab setBackgroundColor:[UIColorcolorWithPatternImage:[UIImageimageNamed:@"top.png"]]];

    [self.navigationController.navigationBaraddSubview:topLab];

    [topLab release];

    

    UIButton *leftButton = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, 60, 40)];

    [leftButton setImage:[UIImageimageNamed:@"back.png"]forState:UIControlStateNormal];

    [leftButton addTarget:selfaction:@selector(doLeftBar)forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *leftItem = [[UIBarButtonItemalloc] initWithCustomView:leftButton];

    self.navigationItem.leftBarButtonItem=leftItem;

    [leftButton release];

先说一个自定义navigation左右键 

 self.title = @"第一级视图"; 
   // self.navigationItem.title = @"第一级视图";//设置导航控制标题 
     
    //实现一个右边按钮,默认顶级视图是没有左右按钮的 
    UIBarButtonItem *rigthButton = [[UIBarButtonItem alloc]  initWithTitle:@"编辑"  style:UIBarButtonItemStyleBordered  target:self  action:@selector(editButtonPressed:)]; 
    self.navigationItem.rightBarButtonItem = rigthButton; 
    [rigthButton release];  
    //实例化一个可变数组 
    NSMutableArray *array = [[NSMutableArray alloc] init ];// 
    self.controllers = array; 
    [array release]; 
    [self initAllSecondControllers:self.controllers]; 


更改navigationController push和pop界面切换动画

博客:http://blog.csdn.net/longlongago2000 

有时候我们需要自定义navigationController push和pop界面切换动画,用到的代码如下:

For Push:

[cpp] view plaincopy

  1. MainView *nextView=[[MainView alloc] init];  
  2. [UIView  beginAnimations:nil context:NULL];  
  3. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  4. [UIView setAnimationDuration:0.75];  
  5. [self.navigationController pushViewController:nextView animated:NO];  
  6. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];  
  7. [UIView commitAnimations];  
  8. [nextView release];  

For Pop:

方法一:

[cpp] view plaincopy

  1. [UIView  beginAnimations:nil context:NULL];  
  2. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  3. [UIView setAnimationDuration:0.75];  
  4. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];  
  5. [UIView commitAnimations];  
  6.   
  7. [UIView beginAnimations:nil context:NULL];  
  8. [UIView setAnimationDelay:0.375];  
  9. [self.navigationController popViewControllerAnimated:NO];  
  10. [UIView commitAnimations];  

方法二:

可实现左右滑动动画,可设置滑动方向。

[cpp] view plaincopy

  1. CATransition* transition = [CATransition animation];  
  2. transition.duration = 0.5;  
  3. transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];  
  4. transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade  
  5. //transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom  
  6. [self.navigationController.view.layer addAnimation:transition forKey:nil];  
  7. [[self navigationController] popViewControllerAnimated:NO];  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值