#if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UIAppearance.h>)
//
// UIAppearance.h
// UIKit
//
// Copyright 2011-2018 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class UITraitCollection;
#define UI_APPEARANCE_SELECTOR __attribute__((annotate("ui_appearance_selector")))
///!!!: 外观容器 <协议>
/*
- 配合UIAppearance协议使用;需要使用UIAppearance协议的,一般也要遵守UIAppearanceContainer协议
- 用来标识支持UIAppearance的属性;需要在想要支持UIAppearance的属性后边标记 UI_APPEARANCE_SELECTOR
- 支持的属性类型有:id/NSInteger/NSUInteger/CGFloat/CGPoint/CGSize/CGRect/UIEdgeInsets/UIOffset/UIColor等
属性访问器方法必须采用以下形式:
- (void)setProperty:(PropertyType)property forAxis1:(IntegerType)axis1 axis2:(IntegerType)axis2 axisN:(IntegerType)axisN;
- (PropertyType)propertyForAxis1:(IntegerType)axis1 axis2:(IntegerType)axis2 axisN:(IntegerType)axisN;
*/
@protocol UIAppearanceContainer <NSObject>
@end
///!!!: 外观 <协议>
/*
- UIAppearance
外观协议;遵守此协议的类控件可以全局设置其UI,如UIView
- 概述
此协议会在控件加入Window之前统一设置UI,已经加入Window的控件无法修改其UI
提供3种方法统一设置控件UI
*/
@protocol UIAppearance <NSObject>
// 统一设置 指定类型的控件(如:统一设置UIView)
/*
- 用法:
[[UINavigationBar appearance] setBarTintColor:myColor];
- 此方法与tintColor设置有冲突,不能通过此方法设置tintColor
*/
+ (instancetype)appearance;
// 统一设置 某个控件的所有子控件
/*
- 用法:
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UISplitViewController class]]] setBarTintColor:myColor];
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UITabBarController class], [UISplitViewController class]]] setBarTintColor:myTabbedNavBarColor];
- 如果视图层级中多层都使用了此方法,最外层控件的设置生效
*/
+ (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);
@end
NS_ASSUME_NONNULL_END
#else
#import <UIKitCore/UIAppearance.h>
#endif
UIAppearance.h
猜你喜欢
转载自blog.csdn.net/weixin_33861800/article/details/87537955
今日推荐
周排行