[转]Appearance

Appearance Proxies

UIAppearance是一个协议,UIView默认已经遵守了这个协议。

@protocol UIAppearance <NSObject>
@interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusEnvironment>

来看看UIAppearance都有什么方法

+ (instancetype)appearance;
+ (instancetype)appearanceWhenContainedIn:(nullable Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION NS_DEPRECATED_IOS(5_0, 9_0, "Use +appearanceWhenContainedInInstancesOfClasses: instead") __TVOS_PROHIBITED;
+ (instancetype)appearanceWhenContainedInInstancesOfClasses:(NSArray<Class <UIAppearanceContainer>> *)containerTypes NS_AVAILABLE_IOS(9_0);
+ (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait NS_AVAILABLE_IOS(8_0);
+ (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedIn:(nullable Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION NS_DEPRECATED_IOS(8_0, 9_0, "Use +appearanceForTraitCollection:whenContainedInInstancesOfClasses: instead") __TVOS_PROHIBITED;
+ (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedInInstancesOfClasses:(NSArray<Class <UIAppearanceContainer>> *)containerTypes  NS_AVAILABLE_IOS(9_0);

让某一类控件同时表现某种属性

[[UIButton appearance] setBackgroundColor:[UIColor blackColor]];
[[UIButton appearance] setTitle:@"呵呵哒" forState:UIControlStateNormal];

让某一类控件在另一种控件中同时变现某种属性

[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UIView class]]] setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];

上面这句话的意思 就是----使UIView上面的UIButton的titleColor都变成灰色的
效果的话大家可以自己试试,我这里不知道怎么贴图片。。。。。

文/Luxlight(简书作者)
原文链接:http://www.jianshu.com/p/1e4745f0f163
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

自己在模仿 传智微博时的代码

@interface JXTabBarController ()

@end

@implementation JXTabBarController

+ (void)initialize

{

[[UITabBarItem appearanceWhenContainedInInstancesOfClasses:@[[self class]]] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor orangeColor]} forState:UIControlStateSelected];

}

时间: 2024-10-20 04:47:20

[转]Appearance的相关文章

使用CSS3的appearance属性改变元素的外观

大家都知道每个浏览器对HTML元素渲染都不一样,比如说"button",在chrome和ff中,渲染出来的效果都是不尽相同的.这样一来就有了今天这个思路,利用浏览器的对元素的默认渲染风格,我们可以使用"appearance"属性对任何元素的渲染风格改变,最简单的来说,我要把"a"链接默认显示成"按钮"风格,那么我们可以使用"appearance"设置为"button". "ap

设置控件全局显示样式 appearance

iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全局效果,这样就可以很方便的实现UI的自定义效果又能最简单的实现统一界面风格,它提供如下两个方法. + (id)appearance 这个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:[[UINavigationBar appearance] setTintColor:myColor]; + (id)appearanceWhenContainedIn:

Swift开发之CALayer---- Modifying the Layer&#39;s Appearance

CALayer的属性一堆,这些都是??,下面就来测试一下各个属性都什么效果- 先建一个基本的洋红色方块 func testLayerProperty(){ myLayer = CALayer() myLayer.frame = CGRectMake(100, 100, 100, 100) myLayer.backgroundColor = UIColor.magentaColor().CGColor self.view.layer.addSublayer(myLayer) } Swift开发之C

(转)unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法

iOS5 UIViewController加入了管理UIViewController的功能,就像管理subview一样方便.这儿有一博文介绍得很清楚.我在项目中用到了它,方便view的切换.下面的代码有一种fade in/out的效果. [self transitionFromViewController:_currentVC toViewController:newVC duration:0.5 options:UIViewAnimationOptionTransitionCrossDisso

IOS 杂笔-13(appearance的巧妙使用)

NSDictionary * attrs = @{ NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[UIColor grayColor] }; NSDictionary * selectAttrs = @{ NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[UIColo

iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)

一.UI_APPEARANCE_SELECTOR 彩票项目中appearance的用法一直没有搞明白,这次通过第二个项目中老师的讲解,更深一层次的了解到了很多关于appearance的作用以及使用方法. 在iOS属性后有UI_APPEARANCE_SELECTOR标志都可以一次性统一设置.这种情况还有很多.比如说统一设置UITabbarItem的文字颜色 通过appearance来同意设置属性最好是在+ (void)initialize;方法里面. 项目中设置导航栏背景图片的代码: 项目中设置T

[转]设置控件全局显示样式appearance proxy

转自:huifeidexin_1的专栏 appearance是apple在iOS5.0上加的一个协议,它让程序员可以很轻松地改变某控件的全局样式(背景) @selector(appearance) 支持UIAppearance协议的类可以访问appearance selector ,它为receiver返回appearance proxy,我么可以给proxy发一些消息,诸如setTintColor:等 但是它并不是支持所有的UI类.下面列出它支持的类 1.UIActivitiIndicator

Unbalanced calls to begin/end appearance transitions for &lt;IDOOrderHomeViewController: 0x8da2960&gt;.

自定义TabBarController Push下一级Controller时 会报这样的错误:Unbalanced calls to begin/end appearance transitions for <UIVIewController>. 网上的一些回答,都说是动画引起的,解决方法就是,加一个BOOL型的变量,检查是否在做动画. if (transiting) { return; } transiting = YES; [self transitionFromViewControlle

通过appearance设置app主题

参考资料 oschina源码http://git.oschina.net/oschina/iphone-appTintColor解析http://blog.kingiol.com/blog/2014/01/09/ios7-day-by-day-day6-tint-color/ oschina源码分析 //再plist文件中设置View controller-based status bar appearance 为 NO才能起效 [[UIApplication sharedApplication