UIAppearance.h


#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

猜你喜欢

转载自blog.csdn.net/weixin_33861800/article/details/87537955
h'h
8 H
9 H
今日推荐