【我就看看不说话】UIAppearance

2024-08-27 07:58
文章标签 看看 说话 uiappearance

本文主要是介绍【我就看看不说话】UIAppearance,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

+ (id)appearance

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

第一个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:[[UINavigationBar appearance] setTintColor:myColor];
第二个方法是当出现在某个类的出现时候才会改变:例如:

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


       另外其它的UI外观修改如下:


       首先定义两个值:

[csharp]  view plain copy
  1. //这样方便下面多个UI界面设置,textAttributes:字体  
  2. id appearance;  
  3. NSDictionary *textAttributes = nil;  
1.导航条

代码如下:

[csharp]  view plain copy
  1. //导航条  
  2. {  
  3.     appearance = [UINavigationBar appearance];  
  4.     UIImage *navBackgroundImg =[UIImage imageNamed:@"background_nav"];  
  5.       
  6.     [appearance setBackgroundImage:navBackgroundImg forBarMetrics:UIBarMetricsDefault];  
  7. }  

2.标签栏(UITabbar)


代码如下:

[csharp]  view plain copy
  1. //标签栏  
  2. {  
  3.     appearance = [UITabBar appearance];  
  4.     UIImage *tabBarBackGroungImg =[UIImage imageNamed:@"tabbar_background"];  
  5.     [appearance setBackgroundImage:tabBarBackGroungImg];  
  6.       
  7.     UIImage * selectionIndicatorImage =[[UIImage imageNamed:@"tabbar_slider"]resizableImageWithCapInsets:UIEdgeInsetsMake(4, 0, 0, 0)] ;  
  8.     [appearance setSelectionIndicatorImage:selectionIndicatorImage];  
  9. }  
3.分段控件(UISegmentControl)

代码如下:

[csharp]  view plain copy
  1. //Segmente未选中背景  
  2. {  
  3.     //cap insets用来指定哪些区域是固定不变的,未制定的区域则会repeat  
  4.     UIImage *segmentSelected = [[UIImage imageNamed:@"bg_o.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];  
  5.       
  6.     UIImage *segmentUnselected = [[UIImage imageNamed:@"bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];  
  7.       
  8.     UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"line.png"] ;  
  9.       
  10.     UIImage *segUnselectedSelected = [UIImage imageNamed:@"line.png"] ;  
  11.       
  12.     UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"line.png"];  
  13.       
  14.       
  15.     appearance = [UISegmentedControl appearance];  
  16.       
  17.     [appearance setBackgroundImage:segmentUnselected  
  18.                           forState:stateNormal  
  19.                         barMetrics:UIBarMetricsDefault];  
  20.       
  21.     //Segmente选中背景  
  22.     [appearance setBackgroundImage:segmentSelected  
  23.                           forState:stateSelected  
  24.                         barMetrics:UIBarMetricsDefault];  
  25.       
  26.     //Segmente左右都未选中时的分割线  
  27.     //BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height)  
  28.       
  29.     [appearance setDividerImage:segmentUnselectedUnselected  
  30.             forLeftSegmentState:stateNormal  
  31.               rightSegmentState:stateNormal  
  32.                      barMetrics:UIBarMetricsDefault];  
  33.       
  34.     [appearance setDividerImage:segmentSelectedUnselected  
  35.             forLeftSegmentState:stateSelected  
  36.               rightSegmentState:stateNormal  
  37.                      barMetrics:UIBarMetricsDefault];  
  38.       
  39.     [appearance setDividerImage:segUnselectedSelected  
  40.             forLeftSegmentState:stateNormal  
  41.               rightSegmentState:stateSelected  
  42.                      barMetrics:UIBarMetricsDefault];  
  43.       
  44.     //字体  
  45.     textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:  
  46.                       BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextColor,  
  47.                       BAR_BUTTON_TITLE_FONT,UITextAttributeFont,  
  48.                       BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextShadowColor,  
  49.                       [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,  
  50.                       nil];  
  51.       
  52.     [appearance setTitleTextAttributes:textAttributes forState:1];  
  53.       
  54.     textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:  
  55.                       BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextColor,  
  56.                       BAR_BUTTON_TITLE_FONT,UITextAttributeFont,  
  57.                       BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextShadowColor,  
  58.                       [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,  
  59.                       nil];  
  60.       
  61.     [appearance setTitleTextAttributes:textAttributes forState:0];  
  62. }  

4.UIBarbutton


注意:UIBarbutton有leftBarButton,rightBarButton和backBarButton,其中backBarButton由于带有箭头,需要单独设置。

barButton背景设置是ios6.0及以后的,而backbutton是ios5.0及以后的,这里要注意!

代码如下:

[csharp]  view plain copy
  1. //UIBarButtonItem  
  2. {  
  3.     //只是修改导航条上的UIBarButtonItem  
  4.     appearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];  
  5.     //backBarButton和leftBarButton,rightBarButton的字体同时设置  
  6.     textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:  
  7.                       BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextColor,  
  8.                       BAR_BUTTON_TITLE_FONT,UITextAttributeFont,  
  9.                       BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextShadowColor,  
  10.                       [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,  
  11.                       nil];  
  12.       
  13.     [appearance setTitleTextAttributes:textAttributes forState:0];  
  14.       
  15.     textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:  
  16.                       BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextColor,  
  17.                       BAR_BUTTON_TITLE_FONT,UITextAttributeFont,  
  18.                       BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextShadowColor,  
  19.                       [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,  
  20.                       nil];  
  21.       
  22.     [appearance setTitleTextAttributes:textAttributes forState:1];  
  23.       
  24.     UIImage *leftButton = [[UIImage imageNamed:@"bgLeftButton.png"] stretchableImageWithLeftCapWidth:14 topCapHeight:0];  
  25.       
  26.     UIImage *normalButton = [[UIImage imageNamed:@"bgNormalButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];  
  27.       
  28.     //leftBarButton,rightBarButton背景  
  29.     [appearance setBackgroundImage:normalButton  
  30.                           forState:UIControlStateNormal  
  31.                              style:UIBarButtonItemStyleBordered  
  32.                         barMetrics:UIBarMetricsDefault];  
  33.       
  34.     [appearance setBackgroundImage:normalButton  
  35.                           forState:UIControlStateHighlighted  
  36.                              style:UIBarButtonItemStyleBordered  
  37.                         barMetrics:UIBarMetricsDefault];  
  38.       
  39.     //单独设置backBarButton背景  
  40.     [appearance setBackButtonBackgroundImage:leftButton  
  41.                                     forState:0  
  42.                                   barMetrics:UIBarMetricsDefault];  
  43.       
  44.     [appearance setBackButtonBackgroundImage:leftButton  
  45.                                     forState:1  
  46.                                   barMetrics:UIBarMetricsDefault];  
  47.       
  48.     [appearance setBackButtonTitlePositionAdjustment:UIOffsetMake(2, -1)  
  49.                                        forBarMetrics:UIBarMetricsDefault];  
  50.       
  51. }  

5.工具栏(UIToolbar)


代码如下:

[csharp]  view plain copy
  1. //toolBar  
  2. {  
  3.     appearance = [UIToolbar appearance];  
  4.     //样式和背景二选一即可,看需求了  
  5.     //样式(黑色半透明,不透明等)设置  
  6.     [appearance setBarStyle:UIBarStyleBlackTranslucent];  
  7.     //背景设置  
  8.     [appearance setBackgroundImage:[UIImage imageNamed:@"background_nav.png"]  
  9.                 forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];  
  10. }  



补充一个需要注意的地方:全局的设置最好在所有界面初始化前开始设置,否则可能失效。

一般写在appDelegate.m文件中。


原文连接:http://blog.csdn.net/shenjx1225/article/details/8552449

这篇关于【我就看看不说话】UIAppearance的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111084

相关文章

聊聊说话的习惯

1 在日常生活中,每个人都有固定的说话习惯。心理学研究表明,通过一个人的说话习惯,也可以分析出他的性格特点。对于每一个人来讲,说话习惯已经融为他们生活中的一部分。在社交活动中,一些不良的说话习惯很可能会给他们带来麻烦。因此,了解说话习惯对心理活动的影响是十分有必要的。 2 具有顺畅的说话习惯的人,大多思路清晰、语速适中、用词准确并且声声人耳,是典型的顺畅型说话方式这种类型的人要么不说话,要么

每个游戏公司的领导都应该看看Supercell的“十年总结”

我知道,你一定会说,Supercell的案例太特殊了。手游出现以来,全世界就只有这么一个Supercell,它的经历、理念和公司架构这些文化,其他公司学不来,不管对中国公司还是海外公司,都没有什么实际借鉴意义。 但Supercell真的有这么“特殊”吗? 比如他们对于留存数据的看重,尤其是测试期留存的看重,和国内——和任何一家常规游戏公司看重留存的态度,都没有什么明显不同。 他们也会试着设立

全网第一份 | Flink学习面试灵魂40问,看看你能答上来几个?

《2021年最新版大数据面试题全面开启更新》 答案将在下期给出。   概念和基础篇   简单介绍一下Flink Flink相比传统的Spark Streaming有什么区别?和Spark中的structured streaming 相比呢?Flink相比ss和storm有什么优势? Flink的组件栈是怎么样的? Flink的基础编程模型了解吗?

挺好的一篇总结文(等有空时看看)

http://www.cocoachina.com/industry/20140609/8732.html 行走于Swift的世界中 发布于:2014-06-09 09:49阅读数:13127 Swift并不像我上一篇表达自己初步看法的文章里所说的那样,相对于objc来说有更好的学习曲线。Swift在漂亮的语法之后其实隐藏了很多细节和实现,而如果无法理解这些细节和实现,就很难

如何设计日志采集系统?不妨看看这篇文章

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 来源:r6d.cn/9K3Q 概述 日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此来帮助人类做出决策。在这个转变的过程中,日志采集Agent在其中扮演着重要的角色。 作为一个日志采集的Agent简单来看其

自然语言处理-应用场景-文本生成:Seq2Seq --> 看图说话【将一张图片转为一段文本】

人工智能-自然语言处理(NLP)-应用场景-Seq2Seq:看图说话【将一张图片转为一段文本】

看看SpringBoot的自动装配原理

SpringBoot的自动装配原理 明天面试浅浅复习一下八股文 面试官:说一下springboot的自动装配 像以前开发的时候,配置文件需要用xml和java配置类进行显式配置,一整就整一大堆的配置文件 then 什么是自动装配? Spring boot 定义了一套自己的规范,在Spring Boot启动的时候会扫描有什么外部的jar包的META-INF/spring.fac

周日随便看看

 1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思 Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。 2.JDBC是什么意思 JDBC是允许用户在不同数据库之间做

来看看两种好玩的方法,扩展方法和分部方法

好久没过来扯淡了,话说这年头还有偶遇的事情吗?比如国庆回家的汽车上有个妹子要你qq,要你微信,想着法子跟你聊天,然后睡了一觉,醒来发现 肾不见了?小花絮小花絮,要是肾真没了,也吹不了牛,败不了火了,继续言归正传。   一:扩展方法        说到扩展方法,我想大家都已经再熟悉不过了,也许你的解决方案中有无数个这样的扩展方法,自从有了Linq之后,我们的集合就再也不单纯了。

看看Drools为我们了什么事

KieServices 该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KSession等信息;可以获取KieRepository对象,利用KieRepository来管理KieModule等。 KieServices就是一个中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作。