iOS开发20:Navigation Bar的简单设置

iOS开发20:Navigation Bar的简单设置,第1张

概述前面的一篇文章《iOS开发16:使用Navigation Controller切换视图》中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigationItem就可以理解为Navigation Bar中的内容,通过编辑UINavigationItem,我们可以使得在Navigation Bar中显示想要的东西,比如设置标题、添加按钮等。 这篇博客将会以一个小

前面的一篇文章《iOS开发16:使用Navigation Controller切换视图》中的小例子在运行时,屏幕上方出现的工具栏就是Navigation bar,而所谓UINavigationItem就可以理解为Navigation bar中的内容,通过编辑UINavigationItem,我们可以使得在Navigation bar中显示想要的东西,比如设置标题、添加按钮等。

这篇博客将会以一个小例子来演示如何设置UINavigationItem。

现在我用的是Xcode 4.3,在使用上跟Xcode 4.2差不多。

1、首先运行Xcode 4.3,创建一个Single VIEw Application,名称为UINavigationItem Test:

2、其次,我们要使得程序运行时能够显示Navigation bar:

2.1 单击AppDelegate.h,向其中添加属性:

@property (strong,nonatomic) UINavigationController *navController;

2.2 打开AppDelegate.m,在@synthesize vIEwController = _vIEwController;之后添加代码:

@synthesize navController;#pragma mark - #pragma mark Application lifecycle

2.3 修改dIDFinishLaunchingWithOptions方法代码如下:

- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // OverrIDe point for customization after application launch.    self.vIEwController = [[VIEwController alloc] initWithNibname:@"VIEwController" bundle:nil];        self.navController = [[UINavigationController alloc] initWithRootVIEwController:self.vIEwController];     [self.window addSubvIEw:navController.vIEw];        [self.window makeKeyAndVisible];    return YES;}

此时运行程序,会发现出现了Navigation bar:

下面讲一下关于NavigationItem的简单设置。

3、设置标题:

打开VIEwController.m,在vIEwDIDLoad方法中[super vIEwDIDLoad];之后添加代码:

self.navigationItem.Title = @"标题";

运行:

4、自定义标题,设置TitleVIEw:

如果我们想改变标题的颜色和字体,就需要自己定义一个UILabel,并且已经设置好这个Label的内容,可以设置自己想要的字体、大小和颜色等。然后执行self.navigationItem.TitleVIEw = myLabel;就可以看到想要的效果。

4.1 打开VIEwController.h,向其中添加属性:

@property (strong,nonatomic) UILabel *TitleLabel;

4.2 打开VIEwController.m,在@implementation VIEwController下面一行添加代码:

@synthesize TitleLabel;

4.3 在vIEwDIDLoad方法中,去掉self.navigationItem.Title = @"标题";,并添加代码:

//自定义标题TitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,44)];TitleLabel.backgroundcolor = [UIcolor clearcolor];  //设置Label背景透明TitleLabel.Font = [UIFont boldSystemFontOfSize:20];  //设置文本字体与大小TitleLabel.textcolor = [UIcolor colorWithRed:(0.0/255.0) green:(255.0 / 255.0) blue:(0.0 / 255.0) Alpha:1];  //设置文本颜色TitleLabel.textAlignment = UITextAlignmentCenter;TitleLabel.text = @"自定义标题";  //设置标题self.navigationItem.TitleVIEw = self.TitleLabel;

运行:

实际上,不仅仅可以将TitleVIEw设置成Label,只要是UIVIEw的对象都可以设为TitleVIEw,例如,将4.3中的代码改成:

UIbutton *button = [UIbuttonbuttonWithType: UIbuttonTypeRoundedRect];[button setTitle: @"按钮" forState: UIControlStatenormal];[button sizetoFit];self.navigationItem.TitleVIEw = button;

则运行起来效果如下:

5、为Navigation bar添加左按钮

以下是进行leftbarbuttonItem设置的代码:

self.navigationItem.leftbarbuttonItem = (UIbarbuttonItem *)self.navigationItem.leftbarbuttonItems = (UIbarbuttonItem *)self.navigationItemsetleftbarbuttonItem:(UIbarbuttonItem *)self.navigationItemsetleftbarbuttonItem:(UIbarbuttonItem *) animated:(BOol)self.navigationItemsetleftbarbuttonItems:(NSArray *)self.navigationItemsetleftbarbuttonItems:(NSArray *) animated:(BOol)

其实很简单,只要定义好一个UIbarbuttonItem,然后执行上述某行代码就行了。

5.1 为了使得运行时不出错,我们在VIEwController.m中添加一个空方法,由将要创建的左右按钮使用:

//空方法-(voID)myAction {}

5.2 添加一个左按钮:

在VIEwDIDLoad方法最后添加代码:

//添加左按钮UIbarbuttonItem *leftbutton = [[UIbarbuttonItem alloc]                                          initWithTitle:@"左按钮"                                          style:UIbarbuttonItemStylePlain                                          target:self                                           action:@selector(myAction)];[self.navigationItem setleftbarbuttonItem:leftbutton];

运行效果如下:

创建一个UIbarbuttonItem用的方法主要有:

[UIbarbuttonItemalloc]initWithTitle:(Nsstring *) style:(UIbarbuttonItemStyle) target:(ID) action:(SEL)[UIbarbuttonItemalloc]initWithbarbuttonSystemItem:(UIbarbuttonSystemItem) target:(ID) action:(SEL)

在第一个方法中,我们可以使用的按钮样式有:

UIbarbuttonItemStyleborderedUIbarbuttonItemStyleDoneUIbarbuttonItemStylePlain

效果分别如下:

          

看上去第一个和第三个样式效果是一样的。

6、添加一个右按钮

在VIEwDIDLoad方法最后添加代码:

//添加右按钮UIbarbuttonItem *rightbutton = [[UIbarbuttonItem alloc]                                initWithbarbuttonSystemItem:UIbarbuttonSystemItemUndo                                target:self                                action:@selector(myAction)];self.navigationItem.rightbarbuttonItem = rightbutton;

运行如下:

这里创建UIbarbuttonItem用的方法是

[UIbarbuttonItemalloc]initWithbarbuttonSystemItem:(UIbarbuttonSystemItem) target:(ID) action:(SEL)

用了系统自带的按钮样式,这些样式的标签和效果如下:

@H_587_301@

注意,UIbarbuttonSystemItemPageCurl只能在Tool bar上显示。

7、添加多个右按钮

在VIEwDIDLoad方法中最后添加代码:

//添加多个右按钮UIbarbuttonItem *rightbutton1 = [[UIbarbuttonItem alloc]                                initWithbarbuttonSystemItem:UIbarbuttonSystemItemDone                                target:self                                action:@selector(myAction)];UIbarbuttonItem *rightbutton2 = [[UIbarbuttonItem alloc]                                 initWithbarbuttonSystemItem:UIbarbuttonSystemItemFixedspace                                 target:nil                                 action:nil];UIbarbuttonItem *rightbutton3 = [[UIbarbuttonItem alloc]                                 initWithbarbuttonSystemItem:UIbarbuttonSystemItemEdit                                 target:self                                 action:@selector(myAction)];UIbarbuttonItem *rightbutton4 = [[UIbarbuttonItem alloc]                                 initWithbarbuttonSystemItem:UIbarbuttonSystemItemFlexibleSpace                                 target:nil                                 action:nil];UIbarbuttonItem *rightbutton5 = [[UIbarbuttonItem alloc]                                 initWithbarbuttonSystemItem:UIbarbuttonSystemItemOrganize                                 target:self                                 action:@selector(myAction)];NSArray *buttonArray = [[NSArray alloc]                        initWithObjects:rightbutton1,rightbutton2,rightbutton3,rightbutton4,rightbutton5,nil];self.navigationItem.rightbarbuttonItems = buttonArray;

为了更好的显示效果,把设置TitleVIEw以及设置leftbarbuttonItem的代码注释掉,运行效果如下:

上面的UIbarbuttonSystemItemFixedspace和UIbarbuttonSystemItemFlexibleSpace都是系统提供的用于占位的按钮样式。

8、设置Navigation bar背景颜色

在vIEwDIDLoad方法后面添加代码:

//设置Navigation bar颜色self.navigationController.navigationbar.tintcolor = [UIcolor colorWithRed:(218.0/255.0) green:(228.0 / 255.0) blue:(250.0 / 255.0) Alpha:1];

运行如下:

9、设置Navigation bar背景图片

首先将准备好作为背景的图片拖到工程中,我用的图片名称是Title_bg.png。

将上面的代码改成:

//设置Navigation bar背景图片UIImage *Title_bg = [UIImage imagenamed:@"Title_bg.png"];  //获取图片CGSize TitleSize = self.navigationController.navigationbar.bounds.size;  //获取Navigation bar的位置和大小Title_bg = [self scaletoSize:Title_bg size:TitleSize];//设置图片的大小与Navigation bar相同[self.navigationController.navigationbar      setBackgroundImage:Title_bg     forbarMetrics:UIbarMetricsDefault];  //设置背景

之后,在VIEwController.m中添加一个方法用于调整图片大小:

//调整图片大小- (UIImage *)scaletoSize:(UIImage *)img size:(CGSize)size{    UIGraphicsBeginImageContext(size);    [img drawInRect:CGRectMake(0,size.wIDth,size.height)];    UIImage* scaledImage = UIGraphicsGetimageFromCurrentimageContext();    UIGraphicsEndImageContext();    return scaledImage;}

运行:

总结

以上是内存溢出为你收集整理的iOS开发20:Navigation Bar的简单设置全部内容,希望文章能够帮你解决iOS开发20:Navigation Bar的简单设置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

                  标签       效果                        标签          效果
 UIbarbuttonSystemItemAction     

 
 UIbarbuttonSystemItemPause     

 UIbarbuttonSystemItemAdd     

 
 UIbarbuttonSystemItemPlay     

 
 UIbarbuttonSystemItemBookmarks     

 
 UIbarbuttonSystemItemRedo     

 
 UIbarbuttonSystemItemCamera     

 
 UIbarbuttonSystemItemRefresh       

 
 UIbarbuttonSystemItemCancel     

 
 UIbarbuttonSystemItemReply     

 
 UIbarbuttonSystemItemCompose     

 UIbarbuttonSystemItemRewind     

 
 UIbarbuttonSystemItemDone     

 
 UIbarbuttonSystemItemSave     

 
 UIbarbuttonSystemItemEdit     

 UIbarbuttonSystemItemSearch     

 
 UIbarbuttonSystemItemFastForward       

 UIbarbuttonSystemItemStop     

 
 UIbarbuttonSystemItemOrganize     

 
 UIbarbuttonSystemItemTrash     

 
 UIbarbuttonSystemItemPageCurl     

 UIbarbuttonSystemItemUndo