有人知道怎么实现uinavigationbar颜色的渐隐效果么

主题 : UINavigationBar 多个按钮
级别: 新手上路
UID: 317689
可可豆: 497 CB
威望: 377 点
在线时间: 236(时)
发自: Web Page
来源于&&分类
UINavigationBar 多个按钮&&&
我想在UINavigationBar上添加多个按钮,一般是左按钮、标题、右按钮,如果我想要三个按钮应该怎么办,网上说是用items,但是我不知道怎么用,能指点一下吗,谢谢。
每天进步一点点
级别: 新手上路
可可豆: 31 CB
威望: 31 点
在线时间: 97(时)
发自: Web Page
自定义一个UIView,然后用下面的self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:myView];
级别: 新手上路
UID: 317689
可可豆: 497 CB
威望: 377 点
在线时间: 236(时)
发自: Web Page
回 1楼(sung) 的帖子
问题已经解决,谢谢
每天进步一点点
级别: 新手上路
UID: 286485
可可豆: 373 CB
威望: 215 点
在线时间: 26(时)
发自: Web Page
支持数组的~可以用数组NSArray *leftItems = @[button1, button2];[self.navigationItem setLeftBarButtonItems:leftItems];
一天的耕耘一天的收获,慢慢积累才能创造明天
级别: 新手上路
UID: 317689
可可豆: 497 CB
威望: 377 点
在线时间: 236(时)
发自: Web Page
回 3楼(陆有齐) 的帖子
多谢您的解答
每天进步一点点
关注本帖(如果有新回复会站内信通知您)
4*5+2 正确答案:22
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版12132人阅读
1.UINavigationController是用于构建分层应用程序的主要工具,它维护了一个视图控制器栈,任何类型的视图控制器都可以放入.
& 它在管理,以及换入和换出多个内容视图方面,与UITabBarController(标签控制器)类似. 两者间的主要不同在于:&UINavigationController是作为栈来实现,它更适合用于处理分层数据.
&它还有一个作用是用作顶部菜单。
2. 根控制器,子控制器.
&&& 在设计导航控制器时,需要指定用户看到的第一个视图,该视图处在导航栈的最底层,其对应的控制器称为根控制器.所以不要把根控制器理解为导航控制器.根控制器也是导航控制器的一个子控制器.
&&& 在术语上把栈中的除了根控制器其余的控制器称为子控制器.
&&& 一般地,根控制器对应的视图上有各个子控制器视图的入口,回退到根视图然后再切换各个子视图.
&&& 默认地,导航控制器会自动在当前子控制器对应视图的导航栏的右端加一个返回按钮,名称是上一个视图的标题.
3. 导航按钮.
&& 导航按钮类似于网页上的后退按钮,当点击时,当前的视图控制器出栈,栈中的下一个视图成为当前视图.
4. 其它术语:
&&& 扩展图标(accessory icon)称为扩展指示器(disclosure indicator),告知将切换到另一个视图,它以一个灰色箭头表示.
&&& 细节展示按钮(detail disclosure button)不仅是一个图标,它还是一个可单击的控件.
5.静态使用UINavigationController
&& &&iphone开发基础教程&&第9章,新建window-based application,使用IB向mainwindow.xib添加了一个UINavigationController,
6.控制器与其成员间的关系
(1).UINavigationController
&& UINavigationBar *navigationB应该是管理了所有子控制器的navigationItem,显示在窗口顶部;
&& UIToolbar *工具栏,显示在窗口底部;
(2).UINavigationBar管理了一组 UINavigationItem.
&&&& navigationBar.frame.size.height=44;
(4).UITabBar管理了一组 UITabBarItem.
&&&& UITabBarController
&&&& tabBar.frame.size.height=49;
(5).UIViewController提供了基础的view管理模型.
& 主要成员:
& UINavigationItem *navigationI用于展现视图控制,第一次被访问时创建,被添加到一个navigationBar中.
& NSArray *toolbarI一组UIBarButtonItem,被添加到一个toolBar中.
& UITabBarItem *tabBarI被添加到一个tabBar中.
(6).UINavigationItem是一个视图顶部上的导航条
&& 有如下主要成员:
&& UIView* titleView:显示在导航栏中间.有解释说This property is ignored if leftBarButtonItem is not nil.,使用后发现不是这样的.
&& UIBarButtonItem *leftBarButtonItem
&& UIBarButtonItem *rightBarButtonItem
&& 系统的刷新图标,但是它带有边框。
&& self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh)];
&& NavigationController导航栏中添加多个UIBarButtonItem
&& /?p=975
(7).UIBarButtonItem封装了一些属性和行为,它被添加到UIToolBar中.
&& 主要成员
&& UIView* customV
7.一些高级控制器
& UIImagePickerController,
& UITableViewController,
8.http://blog.zhaojie.me/2010/12/iphone-composition-resistant-uitabbarcontroller.html
&& 发现UITabBarController不能放入其他的视图内,而只能直接放在Window上(或Window里的UINavigationController里),否则会出现界面向下偏移的情况。对于UITabBarController抗拒组合的情况,深表叹息。
& 并且UITabBarController中的tabBar如何隐藏??
9.在UIViewController中访问导航:
&&& 通常在UIViewController的子类中调用self.navigationController来调用视图的推入和弹出。不能弹出根,
&&& 要改变导航栏的样式或颜色,访问self.navigationController.navigationBar
&&& 要改变上面的左右按钮或标题内容,访问self.navigationItem,它描述导航栏上的控件内容。
10.UINavigationItem:
&&&& UINavigationItem存储导航项属性,包括:左右按钮,标题,标题视图,返回本页的按钮。还有一个prompt,以导航栏上方再显示一行提示,把导航栏位置向下挤。
&&& 参考/smileEvday/archive//2495153.html
&11.定制标题的3种方法:
&&&& self.title=@&标题文字&;self.title=[[[NSBundle mainBundle] infoDictionary] objectForKey:@&CFBundleName&];
&&&&&self.navigationItem.title=@&标题文字&
&&&& self.navigationItem.titleView=
12.在UIViewController中,使用self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.20392f green:0.19607f blue:0.61176f alpha:1.0f];改变导航栏的颜色,它会形成以中间向上下两边的渐变。其它颜色值不确定能否形成这样的效果。
&&&& 使用self.navigationItem.rightBarButtonItem等控制导航栏上面的内容。
13.可以继承出一个UINavigationController的子类 ,重写pushViewController,popViewControllerAnimated方法,
&&&& 比如可以实现点击默认返回按钮时,二次确认是否执行返回操作。
14.presentModalViewController弹出一个UIViewController时,可能需要它有导航栏,以摆放功能按钮。
&&& 只要再包一层UINavigationController即可。
&& &&&& LocalPhotoViewController* viewController=[[LocalPhotoViewController alloc] initWithImageArray:arr currentIndex:0];
&& &&& &UINavigationController* nav=[[UINavigationController alloc] initWithRootViewController:viewController];
&& &&& &[self presentModalViewController:nav animated:YES];
&& &&& &[nav release];
&& &&& &[viewController release];
&& &&&& 取消时使用[self dismissModalViewControllerAnimated:YES];,viewController在内部执行这个也有效。
15.半透明下沿:
&&&&& (1)第一种方法是:换背景,可以使用比标题栏高的背景图片,在UINavigationBar的drawrect中,把它向下延伸一点画出来,可以达到最下边有层半透明的效果。
&&&&&&&&& ios5中有可以直接修改背景图片的属性了。?
&&&& (2)第二种方法是:操作layer,加下阴影
&&&& #import &QuartzCore/CALayer.h&
&&&& CALayer* navLayer = self.navigationController.navigationBar.
&&& navLayer.masksToBounds = NO;
&&& navLayer.shadowColor = [UIColor blackColor].CGC
&& &navLayer.shadowOffset = CGSizeMake(0.0, 5.0);
&& &navLayer.shadowOpacity = 0.25f;
&&& navLayer.shouldRasterize = YES;//加了这句,可能会导致导航栏内容错乱。
16.修改导航bar的高度,使用类别重写)layoutSubviews方法
@implementation UINavigationBar (CustomHeight)
- (void)layoutSubviews {
& [super layoutSubviews];
& CGRect barFrame = self.
& barFrame.size.height =
& self.frame = barF
17.如果在push后立即pop,若使用了animited,则要延0.4秒再pop,否则可能会导航变为了上一层的,而内容还是本层的。如果animited为NO,则可以立即pop。
18.实现pushViewController:animated:的不同页面转换特效
&&&& 首先要不使用pushViewController的默认动画,在调用时将animated设置为NO.
&&&& 使用普通的来CATransition实现转换效果,示例代码如下:
&& &CATransition *animation = [CATransition animation];
&& &[animation setDuration:0.3];
&& &[animation setType: kCATransitionMoveIn];
&& &[animation setSubtype: kCATransitionFromTop];
&& &[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
& & [self.navigationController pushViewController:m_poseAddIssueViewController animated:NO];
& & [self.navigationController.view.layer addAnimation:animation forKey:nil];
19.popToViewController 跳过前面的controller,实现多级回退。
20.若要使用自定义的UINavigationBar,先实现自定义的UINavigationBar,例如命名为CustomNavigationBar,然后使用类别重写如下方法:
@implementation UINavigationBar (CustomImage)
+ (Class)class
&&& return NSClassFromString(@&CustomNavigationBar&);
- (void) drawRect: (CGRect)rect
然后在CustomNavigationBar的drawRect中要增加判断,使UIImagePickerController等使用系统默认的风格,如下:
- (void)drawRect:(CGRect)rect
&&& if([self.delegate isKindOfClass:[UIImagePickerController class]])
&&&&&& [super drawRect:rect];
&&&& ........
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:313992次
积分:5438
积分:5438
排名:第2443名
原创:241篇
评论:23条
(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(4)(7)(13)(9)(11)(16)(3)(9)(11)(8)(21)(6)(2)(3)(3)(6)(4)(2)(3)(5)(1)(4)(13)(1)(1)(3)(17)(9)(13)(22)下次自动登录
现在的位置:
& 综合 & 正文
关于uinavigationcontroller跳转时,若跳转到的页面不需要navigationbar,则总显示黑框的处理办法
问题描述:这里有个uinavigationcontroller,一级页面时这个navigationbar是显示的,由于项目的需要,二级页面是不需要的,问题就出现了:当点击一级页面跳转到二级页面时在跳转的间隙,一级页面的这个Navigationbar总是会显示黑条,我的处理办法时,在一级页面的
viewwilldisappear 这个函数里,这样写:
-(void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.navigationControllersetNavigationBarHidden:YESanimated:YES];//真是太神奇了,当跳转到广告时,因为广告页是没有Navigationbar的,怎么弄总是有黑框,现在把这个animated的值设为YES居然就没有了
(一定要注意,这个地方如果没有动画效果,即设为NO的话是怎么都会有黑框)
&&&&推荐文章:
【上篇】【下篇】当前访客身份:游客 [
这个人很懒,啥也没写
:免费提供App网页自动下载安装所需https服务器!微...
:谢谢分享,学习了,解决了我的问题。
:超级感谢
:如果我每次都要获取3条数据, 这样的方法是不行的...
:引用来自“ChildhoodX”的评论 嗯,不错的总结谢...
:嗯,不错的总结
:好文章,学习了。
:引用来自“1901”的评论 谢谢!帮大忙了。客气!...
:谢谢!帮大忙了。
今日访问:91
昨日访问:317
本周访问:408
本月访问:2281
所有访问:142531
IOS之UINavigationBar
发表于3年前( 23:14)&&
阅读(8983)&|&评论()
0人收藏此文章,
UINavigationBar是用于实现管理层级关系内容的组件,直接继承自UIView。通常用在UINavgationController类中,用于管理和显示UINavgationController的subViewController , 同时UINavgationBar也可以单独使用,添加至任何的UIView中。UINavigationBar比较重要的属性为,左侧按钮,中间的标题,以及右侧按钮。
通过barStyle,titColor,以及translucent属性,我们可以简单的定制UINavgationBar的外观。
其中barStyle对用的样式外观的枚举量包括:
UIBarStyleDefault,对应一个蓝色渐变背景
UIBarStyleBlack,对应一个不透明的褐色背景样式。
UIBarStyleBlackOpaque,等用于UIBarStyleBlack样式,但规定为弃用类型,
UIBarStyleBlackTranslucent,等用于barStyle设置为UIBarStyleBlack,同时指定translucent属性为YES,规定为弃用类型。
translucent属性控制bar的背景是否拥有部分透明效果,当值设置为YES时,无论是什么样式的navgation bar,其背景都是部分透明的。
UINavgationBar虽然直接继承于UIView,但其本身并不是同其它UIView一样通过addSubview去添加内容,比较特殊的是,需要通过navgation item类向其补充指定的
内容,包括按钮和标题。究其原因是在设计上UINavgationBar是通过维护一个UINavgationItem对象栈来实现管理具有层级关系的视图内容。通过
- (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
- (void)setItems:(NSArray *)items animated:(BOOL)animated
三个方法,来向navgation bar中添加或移除内容。
UINavgationBar的items属性保存了所有的item,为数组类型,通过items属性我们可以遍历所有的item元素。
UINavgationBar的topItem指定了当前navgation bar显示的内容,topItem为栈顶元素,假如当前navgation bar维护了n个items,那么topItem的索引为n-1 ;
UINavgationBar的backItem保存了topItem的下一个item,即索引为n-2的item。如果当前只有一个item,那么该属性为nil,而不是与topItem指向相同的item。
UINavgationItem
该类封装了关于UINavgationBar的对象栈中的显示信息,需要注意的是其直接继承自NSObject类型,从名称上注意不要把其当做是UIView的子类。通过
- (id)initWithTitle:(NSString *)title
方法来新建一个UINavgationItem对象,其中title则为显示在UINavgationBar中间的文本标题。并且该参数会将文本内容保存在UINavgationItem的title属性中。在新的
UINavgationItem对象生成之后,通过改变其title属性,也可以更新UInavgationBar的中间的文本标题内容。同时UINavgationItem提供了titleView属性,来让我们更加灵活的定制UINavgationBar中间显示内容,而不仅限于显示普通的文本标题。有时间在对其进行详细描述,此处只是简单提示一下。本篇不对其进行详细介绍,
设置title样式
UINavgationBar提供了titleTextAttributes 属性来简单的设置其title样式,titleTextAttributes是一个NSDictionary类型,包含的固定的属性名称,可以用来设置title的样式,指定的属性keys声明于NSString UIKit Additions Reference扩展中,包括:
NSString *const UITextAttributeFont,设置title的文字字体;
NSString *const UITextAttributeTextColor,设置title的文字颜色;
NSString *const UITextAttributeTextShadowColor,设置titlewz的阴影颜色;
NSString *const UITextAttributeTextShadowOffset,设置titlewz阴影的平移量 ;
如,设置title样式为:系统默认bold类型20号红色字体,阴影颜色为白色,右下偏移2像素
NSDictionary *navTitleArr = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:20],UITextAttributeFont,
[UIColor redColor],UITextAttributeTextColor ,
[NSValue valueWithCGSize:CGSizeMake(2.0, 2.0)] , UITextAttributeTextShadowOffset ,
[UIColor whiteColor] ,UITextAttributeTextShadowColor ,
[navBar setTitleTextAttributes:navTitleArr];
调整title文字竖直方向偏移
UINavgationBar的title文字默认相对于bar的高度为水平竖直居中,同时UINavgationBar提供了调整文本竖直偏移的方法:
- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
adjustment指定了偏移量,正值为向下偏移,负值为向上偏移,如设置当前title向下偏移10个像素
[navBar setTitleVerticalPositionAdjustment:10 forBarMetrics:UIBarMetricsDefault];
设置背景图片
UINavgationBar对外提供了定制其背景图片的方法,
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
通过该方法,我们可以自由的来更改navigation bar的背景样式,而不仅仅局限于其默认指定的那几种样式。如,利用编程方式设置背景图片&
UIGraphicsBeginImageContext(navBar.frame.size) ;
CGContextRef ctx = UIGraphicsGetCurrentContext() ;
CGContextSetFillColorWithColor(ctx, [UIColor scrollViewTexturedBackgroundColor].CGColor) ;
CGContextFillRect(ctx, navBar.bounds) ;
UIImage *image = UIGraphicsGetImageFromCurrentImageContext() ;
UIGraphicsEndPDFContext() ;
[navBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
注:描述于IOS5.1下
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
& && &&&UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];& && && &&&//创建一个导航栏集合&&& && &&&UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];& && && &&&//创建一个左边按钮&&& && &&&UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边" style:UIBarButtonItemStyleBordered target:self action:@selector(clickLeftButton)];& && && &&&//创建一个右边按钮&&& && &&&UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)];& && && &&&//设置导航栏内容&&& && &&&[navigationItem setTitle:@"雨松MOMO程序世界"];&&& && &&&//把导航栏集合添加入导航栏中,设置动画关闭&&& && &&&[navigationBar pushNavigationItem:navigationItem animated:NO];& && && &&&//把左右两个按钮添加入导航栏集合中&&& && &&&[navigationItem setLeftBarButtonItem:leftButton];& && && &&&[navigationItem setRightBarButtonItem:rightButton];&&& && &&&//把导航栏添加到视图中&&& && &&&[self.view addSubview:navigationBar];////////////如果碰到是UINavigationController要添加一个按钮的话UINavigationController *nav.rightBarButtonItem =nav.leftBarButtonItem =
阅读(2035)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'创建一个UINavigationBar,并添加title和按钮的代码',
blogAbstract:'& & & & //创建一个导航栏&&& && &&&UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];& &',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 uinavigationbar添加 的文章

 

随机推荐