前面的一篇文章《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)
用了系统自带的按钮样式,这些样式的标签和效果如下:
标签 | 效果 | 标签 | 效果 |
UIbarbuttonSystemItemAction | UIbarbuttonSystemItemPause | ||
UIbarbuttonSystemItemAdd | UIbarbuttonSystemItemPlay | ||
UIbarbuttonSystemItemBookmarks | UIbarbuttonSystemItemRedo | ||
UIbarbuttonSystemItemCamera | UIbarbuttonSystemItemRefresh | ||
UIbarbuttonSystemItemCancel | UIbarbuttonSystemItemReply | ||
UIbarbuttonSystemItemCompose | UIbarbuttonSystemItemRewind | ||
UIbarbuttonSystemItemDone | UIbarbuttonSystemItemSave | ||
UIbarbuttonSystemItemEdit | UIbarbuttonSystemItemSearch | ||
UIbarbuttonSystemItemFastForward | UIbarbuttonSystemItemStop | ||
UIbarbuttonSystemItemOrganize | UIbarbuttonSystemItemTrash | ||
UIbarbuttonSystemItemPageCurl | UIbarbuttonSystemItemUndo |
评论列表(0条)