UIBarButtonItem关于全局修改,局部修改

全局修改:把所有UIBarButtonItem(或者一个控件)设为同一风格。

局部修改:根据一定条件把一部分UIBarButtonItem(或者一个控件)设为同一风格

有时侯你想把导航条左侧的所有按钮的外观,字体设置为同一风格,但你并不想把导航条左侧按钮外观字体或背景全部用以下代码来更改,如果这样改,有两个UIBarButtonItem,你就要写两次,这样写代码过于赘余,苹果提供了更好的方法统一设置。

UIBarButtonItem *rightItem = [YBarButtonItem barButtonWithStyle:YBarButtonStyleRoundedRectangle
                                                          Title:@"Save"
                                                          Action:@selector(saveButtonClicked)
                                                        Delegate:self];  

self.navigationItem.leftBarButtonItem = rightItem;   

这里就有个方法可以进行全局或局部的修改:

!!!---本人开始用的时候也觉得奇怪,appearance方法怎么可以设置让所有同一种控件都为同一种风格,只能说是苹果太强大,他封装的了一个工具类UIAppearance可以统一设置控件的风格,当调用appearance方法时他会拿到相对应的控件(你用什么控件调用appearace方法,他就会返回什么控件),然后你可以设置统一主题(风格)---!!!

iOS5提供了一个比较强大的工具UIAppearance,可以轻松的统一你的界面,它提供如下两个方法:

+ (id)appearance

+ (id)appearanceWhenContainedIn:(Class <>)ContainerClass,...

第一个方法是统一全部改,比如你设置UINavigationBar 的tintColor,你可以这样写:

[[UINavigationBar appearance] setTintColor:myColor];
/**
   这样写之后,所有的 UINavigationBar 的tintColor的颜色都为myColor
*/

第二个方法是当出现在某个类的出现时候才会改变:例如:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor];

1.修改背景:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:leftButton
                                                      forState:0
                                                    barMetrics:UIBarMetricsDefault];
 

2.修改字体,阴影,字体颜色

NSDictionary* textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                   BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextColor,
                                   BAR_BUTTON_TITLE_FONT,UITextAttributeFont,
                                   BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextShadowColor,
                                   [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,
                                   nil];  

   [[UIBarButtonItem appearance] setTitleTextAttributes:textAttributes forState:0];  

3,修改UIBarButtonItem中文字的位置:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(2, -1)
                                                       forBarMetrics:UIBarMetricsDefault];  

UIBarButtonItem关于全局修改,局部修改

时间: 2024-11-03 20:26:02

UIBarButtonItem关于全局修改,局部修改的相关文章

UIBarButtonItem全局和局部修改

有时侯你并不想把导航条左侧按钮外观字体或背景全部用以下代码来更改 [plain] UIBarButtonItem *rightItem = [YBarButtonItem barButtonWithStyle:YBarButtonStyleRoundedRectangle Title:@"Save" Action:@selector(saveButtonClicked) Delegate:self]; self.navigationItem.leftBarButtonItem = ri

原型的实时局部修改与全部重写的区别(原型的动态性)

1 //代码1-原型原理: 2 function Student(){ 3 //创建了一个空的构造函数 4 } 5 6 //注意:创建了函数Student的同时Student.prototype原型对象就立即产生了 7 8 var person1 = new Student();//实例person1默认都会从Student.prototype 继承属性与方法 9 var person2 = new Student();//实例person2默认都会从Student.prototype 继承属性

四种不同对象的生存方式(栈、堆、全局、局部静态)

[结果分析,引申出四种对象]: 生存方式 执行时机 消亡时机 全局(静态)对象 全局静态存储区global 比程序进入点更早,构造函数先被执行: 程序结束前,其析构函数被执行. 局部静态对象 局部静态存储区local static 在对象诞生时,其构造函数被执行.(注意,此处只会有一个实例产生,而且固定在内存上(非stack也非heap),它的构造函数在控制权第一次移转到其声明处时被调用. 程序将结束时(此对象因而将遭致毁灭)其析构函数才被执行,但比全局对象的析构函数更早一步执行. 局部对象 栈

[ python ] 全局和局部作用域变量的引用

全局与局部变量的引用 (a)locals(b)globals 这里还需要在补充2个关键字一起比较学习,关键字:(c)nonlocal(d)global locals 和 globals locals: 打印当前可用的变量的字典    globals: 返回一个描述当前全局变量的字典 提示:locals 是获取当前的可用变量,而 globals 是获取全局的变量 在使用 locals() 和 globals() 会出现以下三种表现形式: (1)当locals 和 globals 都在全局作用域的时

Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合

Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合 一丶FORM的介绍 1.生成页面可用的HTML标签 2.对用户提交的数据进行校验 3.保留上次输入内容 二丶使用form组件实现注册功能 from django import forms # 导入forms组件 # 按照Django form组件的要求自己写一个类 class RegForm(forms.Form): # 继承Form name = forms.Ch

CentOS 设置网络(修改IP&amp;修改网关&amp;修改DNS)

CentOS修改IP地址 # ifconfig eth0 192.168.1.80 这样就把IP地址修改为192.168.1.80(如果发现上不了网了,那么你可能需要把网关和DNS也改一下,后面会提到),但是当你重新启动系统或网卡之后,还是会变回原来的地址,这种修改方式只适用于需要临时做IP修改.要想永久性修改,就要修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件,这个文件的主要内容如下(你的文件中没有的项,你可以手动添加): # vi  /etc/

全局和局部函数

全局和局部函数   全局和局部函数是为了支持16bit的程序移植,或者是为了维护程序对16bit Windows的兼容性.从32bit Windows起,全局函数和局部函数的实现是封装一个相关的堆函数,这个堆函数用进程的默认堆的句柄.因此全局和局部函数比其它内存管理函数开销更大. 堆函数比全局和局部函数提供更多的特征和控制.新的程序应该使用堆函数除非文档特别地指出应该使用全局或者局部函数.例如,一些Windows程序必须使用LocalFree来释放分配的内存,并且全局函数在DDE(动态数据交换)

修改 OWA 修改密码的生效时间

从 Exchange 中文站之前的文章配置 OWA 下次登录时更改密码中, 我们知道在 Exchange 2010 SP1 当中是可以配置在 OWA 中修改域用户的密码的,那么不知道你是否有发现,当用户在 OWA 对密码进行修改时,修改的信息并不会马上生效,而是要等一会,这个时间默认为15分钟.本文将讲解如何对这个时间进行修改,可以将其缩短或者变成立刻生 效. 出现无法立刻更新的主要原因是 IIS 在默认延迟 15 分钟之后进行更新的用户令牌.例如,如果更改用户帐户的密码,将无法连接到服务器提供

MongoDB--使用修改器修改文档

可以使用修改器啦修改文档,比如增加.删除文档的键值.使用修改器首先要定位到某个文档, 然后再增加相应的修改选项,需要使用update语句 1.$inc修改器修改文档 > db.users.findOne({'name':'cd'}); { "_id" : ObjectId("584eafa97629396db95535da"), "name" : "cd", "sex" : "M"