1197 lines
54 KiB
Objective-C
1197 lines
54 KiB
Objective-C
#ifdef SHOULD_COMPILE_LOOKIN_SERVER
|
||
|
||
//
|
||
// LookinDashboardBlueprint.m
|
||
// Lookin
|
||
//
|
||
// Created by Li Kai on 2019/6/5.
|
||
// https://lookin.work
|
||
//
|
||
|
||
|
||
|
||
#import "LookinDashboardBlueprint.h"
|
||
|
||
@implementation LookinDashboardBlueprint
|
||
|
||
+ (NSArray<LookinAttrGroupIdentifier> *)groupIDs {
|
||
static NSArray<LookinAttrGroupIdentifier> *array;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken,^{
|
||
array = @[
|
||
LookinAttrGroup_Class,
|
||
LookinAttrGroup_Relation,
|
||
LookinAttrGroup_Layout,
|
||
LookinAttrGroup_AutoLayout,
|
||
LookinAttrGroup_ViewLayer,
|
||
LookinAttrGroup_UIStackView,
|
||
LookinAttrGroup_UIVisualEffectView,
|
||
LookinAttrGroup_UIImageView,
|
||
LookinAttrGroup_UILabel,
|
||
LookinAttrGroup_UIControl,
|
||
LookinAttrGroup_UIButton,
|
||
LookinAttrGroup_UIScrollView,
|
||
LookinAttrGroup_UITableView,
|
||
LookinAttrGroup_UITextView,
|
||
LookinAttrGroup_UITextField
|
||
];
|
||
});
|
||
return array;
|
||
}
|
||
|
||
+ (NSArray<LookinAttrSectionIdentifier> *)sectionIDsForGroupID:(LookinAttrGroupIdentifier)groupID {
|
||
static NSDictionary<LookinAttrGroupIdentifier, NSArray<LookinAttrSectionIdentifier> *> *dict;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken,^{
|
||
dict = @{
|
||
LookinAttrGroup_Class: @[LookinAttrSec_Class_Class],
|
||
|
||
LookinAttrGroup_Relation: @[LookinAttrSec_Relation_Relation],
|
||
|
||
LookinAttrGroup_Layout: @[LookinAttrSec_Layout_Frame,
|
||
LookinAttrSec_Layout_Bounds,
|
||
LookinAttrSec_Layout_SafeArea,
|
||
LookinAttrSec_Layout_Position,
|
||
LookinAttrSec_Layout_AnchorPoint],
|
||
|
||
LookinAttrGroup_AutoLayout: @[LookinAttrSec_AutoLayout_Constraints,
|
||
LookinAttrSec_AutoLayout_IntrinsicSize,
|
||
LookinAttrSec_AutoLayout_Hugging,
|
||
LookinAttrSec_AutoLayout_Resistance],
|
||
|
||
LookinAttrGroup_ViewLayer: @[
|
||
LookinAttrSec_ViewLayer_Visibility,
|
||
LookinAttrSec_ViewLayer_InterationAndMasks,
|
||
LookinAttrSec_ViewLayer_BgColor,
|
||
LookinAttrSec_ViewLayer_Border,
|
||
LookinAttrSec_ViewLayer_Corner,
|
||
LookinAttrSec_ViewLayer_Shadow,
|
||
LookinAttrSec_ViewLayer_ContentMode,
|
||
LookinAttrSec_ViewLayer_TintColor,
|
||
LookinAttrSec_ViewLayer_Tag
|
||
],
|
||
|
||
LookinAttrGroup_UIStackView: @[
|
||
LookinAttrSec_UIStackView_Axis,
|
||
LookinAttrSec_UIStackView_Distribution,
|
||
LookinAttrSec_UIStackView_Alignment,
|
||
LookinAttrSec_UIStackView_Spacing
|
||
],
|
||
|
||
LookinAttrGroup_UIVisualEffectView: @[
|
||
LookinAttrSec_UIVisualEffectView_Style,
|
||
LookinAttrSec_UIVisualEffectView_QMUIForegroundColor
|
||
],
|
||
|
||
LookinAttrGroup_UIImageView: @[LookinAttrSec_UIImageView_Name,
|
||
LookinAttrSec_UIImageView_Open],
|
||
|
||
LookinAttrGroup_UILabel: @[
|
||
LookinAttrSec_UILabel_Text,
|
||
LookinAttrSec_UILabel_Font,
|
||
LookinAttrSec_UILabel_NumberOfLines,
|
||
LookinAttrSec_UILabel_TextColor,
|
||
LookinAttrSec_UILabel_BreakMode,
|
||
LookinAttrSec_UILabel_Alignment,
|
||
LookinAttrSec_UILabel_CanAdjustFont],
|
||
|
||
LookinAttrGroup_UIControl: @[LookinAttrSec_UIControl_EnabledSelected,
|
||
LookinAttrSec_UIControl_QMUIOutsideEdge,
|
||
LookinAttrSec_UIControl_VerAlignment,
|
||
LookinAttrSec_UIControl_HorAlignment],
|
||
|
||
LookinAttrGroup_UIButton: @[LookinAttrSec_UIButton_ContentInsets,
|
||
LookinAttrSec_UIButton_TitleInsets,
|
||
LookinAttrSec_UIButton_ImageInsets],
|
||
|
||
LookinAttrGroup_UIScrollView: @[LookinAttrSec_UIScrollView_ContentInset,
|
||
LookinAttrSec_UIScrollView_AdjustedInset,
|
||
LookinAttrSec_UIScrollView_QMUIInitialInset,
|
||
LookinAttrSec_UIScrollView_IndicatorInset,
|
||
LookinAttrSec_UIScrollView_Offset,
|
||
LookinAttrSec_UIScrollView_ContentSize,
|
||
LookinAttrSec_UIScrollView_Behavior,
|
||
LookinAttrSec_UIScrollView_ShowsIndicator,
|
||
LookinAttrSec_UIScrollView_Bounce,
|
||
LookinAttrSec_UIScrollView_ScrollPaging,
|
||
LookinAttrSec_UIScrollView_ContentTouches,
|
||
LookinAttrSec_UIScrollView_Zoom],
|
||
|
||
LookinAttrGroup_UITableView: @[LookinAttrSec_UITableView_Style,
|
||
LookinAttrSec_UITableView_SectionsNumber,
|
||
LookinAttrSec_UITableView_RowsNumber,
|
||
LookinAttrSec_UITableView_SeparatorStyle,
|
||
LookinAttrSec_UITableView_SeparatorColor,
|
||
LookinAttrSec_UITableView_SeparatorInset],
|
||
|
||
LookinAttrGroup_UITextView: @[LookinAttrSec_UITextView_Basic,
|
||
LookinAttrSec_UITextView_Text,
|
||
LookinAttrSec_UITextView_Font,
|
||
LookinAttrSec_UITextView_TextColor,
|
||
LookinAttrSec_UITextView_Alignment,
|
||
LookinAttrSec_UITextView_ContainerInset],
|
||
|
||
LookinAttrGroup_UITextField: @[LookinAttrSec_UITextField_Text,
|
||
LookinAttrSec_UITextField_Placeholder,
|
||
LookinAttrSec_UITextField_Font,
|
||
LookinAttrSec_UITextField_TextColor,
|
||
LookinAttrSec_UITextField_Alignment,
|
||
LookinAttrSec_UITextField_Clears,
|
||
LookinAttrSec_UITextField_CanAdjustFont,
|
||
LookinAttrSec_UITextField_ClearButtonMode],
|
||
|
||
};
|
||
});
|
||
return dict[groupID];
|
||
}
|
||
|
||
+ (NSArray<LookinAttrIdentifier> *)attrIDsForSectionID:(LookinAttrSectionIdentifier)sectionID {
|
||
static NSDictionary<LookinAttrSectionIdentifier, NSArray<LookinAttrIdentifier> *> *dict;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken,^{
|
||
dict = @{
|
||
LookinAttrSec_Class_Class: @[LookinAttr_Class_Class_Class],
|
||
|
||
LookinAttrSec_Relation_Relation: @[LookinAttr_Relation_Relation_Relation],
|
||
|
||
LookinAttrSec_Layout_Frame: @[LookinAttr_Layout_Frame_Frame],
|
||
LookinAttrSec_Layout_Bounds: @[LookinAttr_Layout_Bounds_Bounds],
|
||
LookinAttrSec_Layout_SafeArea: @[LookinAttr_Layout_SafeArea_SafeArea],
|
||
LookinAttrSec_Layout_Position: @[LookinAttr_Layout_Position_Position],
|
||
LookinAttrSec_Layout_AnchorPoint: @[LookinAttr_Layout_AnchorPoint_AnchorPoint],
|
||
|
||
LookinAttrSec_AutoLayout_Hugging: @[LookinAttr_AutoLayout_Hugging_Hor,
|
||
LookinAttr_AutoLayout_Hugging_Ver],
|
||
LookinAttrSec_AutoLayout_Resistance: @[LookinAttr_AutoLayout_Resistance_Hor,
|
||
LookinAttr_AutoLayout_Resistance_Ver],
|
||
LookinAttrSec_AutoLayout_Constraints: @[LookinAttr_AutoLayout_Constraints_Constraints],
|
||
LookinAttrSec_AutoLayout_IntrinsicSize: @[LookinAttr_AutoLayout_IntrinsicSize_Size],
|
||
|
||
LookinAttrSec_ViewLayer_Visibility: @[LookinAttr_ViewLayer_Visibility_Hidden,
|
||
LookinAttr_ViewLayer_Visibility_Opacity],
|
||
|
||
LookinAttrSec_ViewLayer_InterationAndMasks: @[LookinAttr_ViewLayer_InterationAndMasks_Interaction,
|
||
LookinAttr_ViewLayer_InterationAndMasks_MasksToBounds],
|
||
|
||
LookinAttrSec_ViewLayer_Corner: @[LookinAttr_ViewLayer_Corner_Radius],
|
||
|
||
LookinAttrSec_ViewLayer_BgColor: @[LookinAttr_ViewLayer_BgColor_BgColor],
|
||
|
||
LookinAttrSec_ViewLayer_Border: @[LookinAttr_ViewLayer_Border_Color,
|
||
LookinAttr_ViewLayer_Border_Width],
|
||
|
||
LookinAttrSec_ViewLayer_Shadow: @[LookinAttr_ViewLayer_Shadow_Color,
|
||
LookinAttr_ViewLayer_Shadow_Opacity,
|
||
LookinAttr_ViewLayer_Shadow_Radius,
|
||
LookinAttr_ViewLayer_Shadow_OffsetW,
|
||
LookinAttr_ViewLayer_Shadow_OffsetH],
|
||
|
||
LookinAttrSec_ViewLayer_ContentMode: @[LookinAttr_ViewLayer_ContentMode_Mode],
|
||
|
||
LookinAttrSec_ViewLayer_TintColor: @[LookinAttr_ViewLayer_TintColor_Color,
|
||
LookinAttr_ViewLayer_TintColor_Mode],
|
||
|
||
LookinAttrSec_ViewLayer_Tag: @[LookinAttr_ViewLayer_Tag_Tag],
|
||
|
||
LookinAttrSec_UIStackView_Axis: @[LookinAttr_UIStackView_Axis_Axis],
|
||
|
||
LookinAttrSec_UIStackView_Distribution: @[LookinAttr_UIStackView_Distribution_Distribution],
|
||
|
||
LookinAttrSec_UIStackView_Alignment: @[LookinAttr_UIStackView_Alignment_Alignment],
|
||
|
||
LookinAttrSec_UIStackView_Spacing: @[LookinAttr_UIStackView_Spacing_Spacing],
|
||
|
||
LookinAttrSec_UIVisualEffectView_Style: @[LookinAttr_UIVisualEffectView_Style_Style],
|
||
|
||
LookinAttrSec_UIVisualEffectView_QMUIForegroundColor: @[LookinAttr_UIVisualEffectView_QMUIForegroundColor_Color],
|
||
|
||
LookinAttrSec_UIImageView_Name: @[LookinAttr_UIImageView_Name_Name],
|
||
|
||
LookinAttrSec_UIImageView_Open: @[LookinAttr_UIImageView_Open_Open],
|
||
|
||
LookinAttrSec_UILabel_Font: @[LookinAttr_UILabel_Font_Name,
|
||
LookinAttr_UILabel_Font_Size],
|
||
|
||
LookinAttrSec_UILabel_NumberOfLines: @[LookinAttr_UILabel_NumberOfLines_NumberOfLines],
|
||
|
||
LookinAttrSec_UILabel_Text: @[LookinAttr_UILabel_Text_Text],
|
||
|
||
LookinAttrSec_UILabel_TextColor: @[LookinAttr_UILabel_TextColor_Color],
|
||
|
||
LookinAttrSec_UILabel_BreakMode: @[LookinAttr_UILabel_BreakMode_Mode],
|
||
|
||
LookinAttrSec_UILabel_Alignment: @[LookinAttr_UILabel_Alignment_Alignment],
|
||
|
||
LookinAttrSec_UILabel_CanAdjustFont: @[LookinAttr_UILabel_CanAdjustFont_CanAdjustFont],
|
||
|
||
LookinAttrSec_UIControl_EnabledSelected: @[LookinAttr_UIControl_EnabledSelected_Enabled,
|
||
LookinAttr_UIControl_EnabledSelected_Selected],
|
||
|
||
LookinAttrSec_UIControl_QMUIOutsideEdge: @[LookinAttr_UIControl_QMUIOutsideEdge_Edge],
|
||
|
||
LookinAttrSec_UIControl_VerAlignment: @[LookinAttr_UIControl_VerAlignment_Alignment],
|
||
|
||
LookinAttrSec_UIControl_HorAlignment: @[LookinAttr_UIControl_HorAlignment_Alignment],
|
||
|
||
LookinAttrSec_UIButton_ContentInsets: @[LookinAttr_UIButton_ContentInsets_Insets],
|
||
|
||
LookinAttrSec_UIButton_TitleInsets: @[LookinAttr_UIButton_TitleInsets_Insets],
|
||
|
||
LookinAttrSec_UIButton_ImageInsets: @[LookinAttr_UIButton_ImageInsets_Insets],
|
||
|
||
LookinAttrSec_UIScrollView_ContentInset: @[LookinAttr_UIScrollView_ContentInset_Inset],
|
||
|
||
LookinAttrSec_UIScrollView_AdjustedInset: @[LookinAttr_UIScrollView_AdjustedInset_Inset],
|
||
|
||
LookinAttrSec_UIScrollView_QMUIInitialInset: @[LookinAttr_UIScrollView_QMUIInitialInset_Inset],
|
||
|
||
LookinAttrSec_UIScrollView_IndicatorInset: @[LookinAttr_UIScrollView_IndicatorInset_Inset],
|
||
|
||
LookinAttrSec_UIScrollView_Offset: @[LookinAttr_UIScrollView_Offset_Offset],
|
||
|
||
LookinAttrSec_UIScrollView_ContentSize: @[LookinAttr_UIScrollView_ContentSize_Size],
|
||
|
||
LookinAttrSec_UIScrollView_Behavior: @[LookinAttr_UIScrollView_Behavior_Behavior],
|
||
|
||
LookinAttrSec_UIScrollView_ShowsIndicator: @[LookinAttr_UIScrollView_ShowsIndicator_Hor,
|
||
LookinAttr_UIScrollView_ShowsIndicator_Ver],
|
||
|
||
LookinAttrSec_UIScrollView_Bounce: @[LookinAttr_UIScrollView_Bounce_Hor,
|
||
LookinAttr_UIScrollView_Bounce_Ver],
|
||
|
||
LookinAttrSec_UIScrollView_ScrollPaging: @[LookinAttr_UIScrollView_ScrollPaging_ScrollEnabled,
|
||
LookinAttr_UIScrollView_ScrollPaging_PagingEnabled],
|
||
|
||
LookinAttrSec_UIScrollView_ContentTouches: @[LookinAttr_UIScrollView_ContentTouches_Delay,
|
||
LookinAttr_UIScrollView_ContentTouches_CanCancel],
|
||
|
||
LookinAttrSec_UIScrollView_Zoom: @[LookinAttr_UIScrollView_Zoom_Bounce,
|
||
LookinAttr_UIScrollView_Zoom_Scale,
|
||
LookinAttr_UIScrollView_Zoom_MinScale,
|
||
LookinAttr_UIScrollView_Zoom_MaxScale],
|
||
|
||
LookinAttrSec_UITableView_Style: @[LookinAttr_UITableView_Style_Style],
|
||
|
||
LookinAttrSec_UITableView_SectionsNumber: @[LookinAttr_UITableView_SectionsNumber_Number],
|
||
|
||
LookinAttrSec_UITableView_RowsNumber: @[LookinAttr_UITableView_RowsNumber_Number],
|
||
|
||
LookinAttrSec_UITableView_SeparatorInset: @[LookinAttr_UITableView_SeparatorInset_Inset],
|
||
|
||
LookinAttrSec_UITableView_SeparatorColor: @[LookinAttr_UITableView_SeparatorColor_Color],
|
||
|
||
LookinAttrSec_UITableView_SeparatorStyle: @[LookinAttr_UITableView_SeparatorStyle_Style],
|
||
|
||
LookinAttrSec_UITextView_Basic: @[LookinAttr_UITextView_Basic_Editable,
|
||
LookinAttr_UITextView_Basic_Selectable],
|
||
|
||
LookinAttrSec_UITextView_Text: @[LookinAttr_UITextView_Text_Text],
|
||
|
||
LookinAttrSec_UITextView_Font: @[LookinAttr_UITextView_Font_Name,
|
||
LookinAttr_UITextView_Font_Size],
|
||
|
||
LookinAttrSec_UITextView_TextColor: @[LookinAttr_UITextView_TextColor_Color],
|
||
|
||
LookinAttrSec_UITextView_Alignment: @[LookinAttr_UITextView_Alignment_Alignment],
|
||
|
||
LookinAttrSec_UITextView_ContainerInset: @[LookinAttr_UITextView_ContainerInset_Inset],
|
||
|
||
LookinAttrSec_UITextField_Text: @[LookinAttr_UITextField_Text_Text],
|
||
|
||
LookinAttrSec_UITextField_Placeholder: @[LookinAttr_UITextField_Placeholder_Placeholder],
|
||
|
||
LookinAttrSec_UITextField_Font: @[LookinAttr_UITextField_Font_Name,
|
||
LookinAttr_UITextField_Font_Size],
|
||
|
||
LookinAttrSec_UITextField_TextColor: @[LookinAttr_UITextField_TextColor_Color],
|
||
|
||
LookinAttrSec_UITextField_Alignment: @[LookinAttr_UITextField_Alignment_Alignment],
|
||
|
||
LookinAttrSec_UITextField_Clears: @[LookinAttr_UITextField_Clears_ClearsOnBeginEditing,
|
||
LookinAttr_UITextField_Clears_ClearsOnInsertion],
|
||
|
||
LookinAttrSec_UITextField_CanAdjustFont: @[LookinAttr_UITextField_CanAdjustFont_CanAdjustFont,
|
||
LookinAttr_UITextField_CanAdjustFont_MinSize],
|
||
|
||
LookinAttrSec_UITextField_ClearButtonMode: @[LookinAttr_UITextField_ClearButtonMode_Mode]
|
||
};
|
||
});
|
||
return dict[sectionID];
|
||
}
|
||
|
||
+ (void)getHostGroupID:(inout LookinAttrGroupIdentifier *)groupID_inout sectionID:(inout LookinAttrSectionIdentifier *)sectionID_inout fromAttrID:(LookinAttrIdentifier)targetAttrID {
|
||
__block LookinAttrGroupIdentifier targetGroupID = nil;
|
||
__block LookinAttrSectionIdentifier targetSecID = nil;
|
||
[[self groupIDs] enumerateObjectsUsingBlock:^(LookinAttrGroupIdentifier _Nonnull groupID, NSUInteger idx, BOOL * _Nonnull stop0) {
|
||
[[self sectionIDsForGroupID:groupID] enumerateObjectsUsingBlock:^(LookinAttrSectionIdentifier _Nonnull secID, NSUInteger idx, BOOL * _Nonnull stop1) {
|
||
[[self attrIDsForSectionID:secID] enumerateObjectsUsingBlock:^(LookinAttrIdentifier _Nonnull attrID, NSUInteger idx, BOOL * _Nonnull stop2) {
|
||
if ([attrID isEqualToString:targetAttrID]) {
|
||
targetGroupID = groupID;
|
||
targetSecID = secID;
|
||
*stop0 = YES;
|
||
*stop1 = YES;
|
||
*stop2 = YES;
|
||
}
|
||
}];
|
||
}];
|
||
}];
|
||
|
||
if (groupID_inout && targetGroupID) {
|
||
*groupID_inout = targetGroupID;
|
||
}
|
||
if (sectionID_inout && targetSecID) {
|
||
*sectionID_inout = targetSecID;
|
||
}
|
||
}
|
||
|
||
+ (NSString *)groupTitleWithGroupID:(LookinAttrGroupIdentifier)groupID {
|
||
static dispatch_once_t onceToken;
|
||
static NSDictionary *rawInfo = nil;
|
||
dispatch_once(&onceToken,^{
|
||
rawInfo = @{
|
||
LookinAttrGroup_Class: @"Class",
|
||
LookinAttrGroup_Relation: @"Relation",
|
||
LookinAttrGroup_Layout: @"Layout",
|
||
LookinAttrGroup_AutoLayout: @"AutoLayout",
|
||
LookinAttrGroup_ViewLayer: @"CALayer / UIView",
|
||
LookinAttrGroup_UIImageView: @"UIImageView",
|
||
LookinAttrGroup_UILabel: @"UILabel",
|
||
LookinAttrGroup_UIControl: @"UIControl",
|
||
LookinAttrGroup_UIButton: @"UIButton",
|
||
LookinAttrGroup_UIScrollView: @"UIScrollView",
|
||
LookinAttrGroup_UITableView: @"UITableView",
|
||
LookinAttrGroup_UITextView: @"UITextView",
|
||
LookinAttrGroup_UITextField: @"UITextField",
|
||
LookinAttrGroup_UIVisualEffectView: @"UIVisualEffectView",
|
||
LookinAttrGroup_UIStackView: @"UIStackView"
|
||
};
|
||
});
|
||
NSString *title = rawInfo[groupID];
|
||
NSAssert(title.length, @"");
|
||
return title;
|
||
}
|
||
|
||
+ (NSString *)sectionTitleWithSectionID:(LookinAttrSectionIdentifier)secID {
|
||
static dispatch_once_t onceToken;
|
||
static NSDictionary *rawInfo = nil;
|
||
dispatch_once(&onceToken,^{
|
||
rawInfo = @{
|
||
LookinAttrSec_Layout_Frame: @"Frame",
|
||
LookinAttrSec_Layout_Bounds: @"Bounds",
|
||
LookinAttrSec_Layout_SafeArea: @"SafeArea",
|
||
LookinAttrSec_Layout_Position: @"Position",
|
||
LookinAttrSec_Layout_AnchorPoint: @"AnchorPoint",
|
||
LookinAttrSec_AutoLayout_Hugging: @"HuggingPriority",
|
||
LookinAttrSec_AutoLayout_Resistance: @"ResistancePriority",
|
||
LookinAttrSec_AutoLayout_IntrinsicSize: @"IntrinsicSize",
|
||
LookinAttrSec_ViewLayer_Corner: @"CornerRadius",
|
||
LookinAttrSec_ViewLayer_BgColor: @"BackgroundColor",
|
||
LookinAttrSec_ViewLayer_Border: @"Border",
|
||
LookinAttrSec_ViewLayer_Shadow: @"Shadow",
|
||
LookinAttrSec_ViewLayer_ContentMode: @"ContentMode",
|
||
LookinAttrSec_ViewLayer_TintColor: @"TintColor",
|
||
LookinAttrSec_ViewLayer_Tag: @"Tag",
|
||
LookinAttrSec_UIStackView_Axis: @"Axis",
|
||
LookinAttrSec_UIStackView_Distribution: @"Distribution",
|
||
LookinAttrSec_UIStackView_Alignment: @"Alignment",
|
||
LookinAttrSec_UIVisualEffectView_Style: @"Style",
|
||
LookinAttrSec_UIVisualEffectView_QMUIForegroundColor: @"ForegroundColor",
|
||
LookinAttrSec_UIImageView_Name: @"ImageName",
|
||
LookinAttrSec_UILabel_TextColor: @"TextColor",
|
||
LookinAttrSec_UITextView_TextColor: @"TextColor",
|
||
LookinAttrSec_UITextField_TextColor: @"TextColor",
|
||
LookinAttrSec_UILabel_BreakMode: @"LineBreakMode",
|
||
LookinAttrSec_UILabel_NumberOfLines: @"NumberOfLines",
|
||
LookinAttrSec_UILabel_Text: @"Text",
|
||
LookinAttrSec_UITextView_Text: @"Text",
|
||
LookinAttrSec_UITextField_Text: @"Text",
|
||
LookinAttrSec_UITextField_Placeholder: @"Placeholder",
|
||
LookinAttrSec_UILabel_Alignment: @"TextAlignment",
|
||
LookinAttrSec_UITextView_Alignment: @"TextAlignment",
|
||
LookinAttrSec_UITextField_Alignment: @"TextAlignment",
|
||
LookinAttrSec_UIControl_HorAlignment: @"HorizontalAlignment",
|
||
LookinAttrSec_UIControl_VerAlignment: @"VerticalAlignment",
|
||
LookinAttrSec_UIControl_QMUIOutsideEdge: @"QMUI_outsideEdge",
|
||
LookinAttrSec_UIButton_ContentInsets: @"ContentInsets",
|
||
LookinAttrSec_UIButton_TitleInsets: @"TitleInsets",
|
||
LookinAttrSec_UIButton_ImageInsets: @"ImageInsets",
|
||
LookinAttrSec_UIScrollView_QMUIInitialInset: @"QMUI_initialContentInset",
|
||
LookinAttrSec_UIScrollView_ContentInset: @"ContentInset",
|
||
LookinAttrSec_UIScrollView_AdjustedInset: @"AdjustedContentInset",
|
||
LookinAttrSec_UIScrollView_IndicatorInset: @"ScrollIndicatorInsets",
|
||
LookinAttrSec_UIScrollView_Offset: @"ContentOffset",
|
||
LookinAttrSec_UIScrollView_ContentSize: @"ContentSize",
|
||
LookinAttrSec_UIScrollView_Behavior: @"InsetAdjustmentBehavior",
|
||
LookinAttrSec_UIScrollView_ShowsIndicator: @"ShowsScrollIndicator",
|
||
LookinAttrSec_UIScrollView_Bounce: @"AlwaysBounce",
|
||
LookinAttrSec_UIScrollView_Zoom: @"Zoom",
|
||
LookinAttrSec_UITableView_Style: @"Style",
|
||
LookinAttrSec_UITableView_SectionsNumber: @"NumberOfSections",
|
||
LookinAttrSec_UITableView_RowsNumber: @"NumberOfRows",
|
||
LookinAttrSec_UITableView_SeparatorColor: @"SeparatorColor",
|
||
LookinAttrSec_UITableView_SeparatorInset: @"SeparatorInset",
|
||
LookinAttrSec_UITableView_SeparatorStyle: @"SeparatorStyle",
|
||
LookinAttrSec_UILabel_Font: @"Font",
|
||
LookinAttrSec_UITextField_Font: @"Font",
|
||
LookinAttrSec_UITextView_Font: @"Font",
|
||
LookinAttrSec_UITextView_ContainerInset: @"ContainerInset",
|
||
LookinAttrSec_UITextField_ClearButtonMode: @"ClearButtonMode",
|
||
};
|
||
});
|
||
return rawInfo[secID];
|
||
}
|
||
|
||
/**
|
||
className: 必填项,标识该属性是哪一个类拥有的
|
||
|
||
fullTitle: 完整的名字,将作为搜索的 keywords,也会展示在搜索结果中,如果为 nil 则不会被搜索到
|
||
|
||
briefTitle:简略的名字,仅 checkbox 和那种自带标题的 input 才需要这个属性,如果需要该属性但该属性又为空,则会读取 fullTitle
|
||
|
||
setterString:用户试图修改属性值时会用到,若该字段为空字符串(即 @“”)则该属性不可修改,若该字段为 nil 则会在 fullTitle 的基础上自动生成(自动改首字母大小写、加前缀后缀,比如 alpha 会被转换为 setAlpha:)
|
||
|
||
getterString:必填项,业务中读取属性值时会用到。如果该字段为 nil ,则会在 fullTitle 的基础上自动生成(自动把 fullTitle 的第一个字母改成小写,比如 Alpha 会被转换为 alpha)。如果该字段为空字符串(比如 image_open_open)则属性值会被固定为 nil,attrType 会被指为 LookinAttrTypeCustomObj
|
||
|
||
typeIfObj:当某个 LookinAttribute 确定是 NSObject 类型时,该方法返回它具体是什么对象,比如 UIColor、NSString
|
||
|
||
enumList:如果某个 attribute 是 enum,则这里标识了相应的 enum 的名称(如 "NSTextAlignment"),业务可通过这个名称进而查询可用的枚举值列表
|
||
|
||
patch:如果为 YES,则用户修改了该 Attribute 的值后,Lookin 会重新拉取和更新相关图层的位置、截图等信息,如果为 nil 则默认是 NO
|
||
|
||
hideIfNil:如果为 YES,则当获取的 value 为 nil 时,Lookin 不会传输该 attr。如果为 NO,则即使 value 为 nil 也会传输(比如 label 的 text 属性,即使它是 nil 我们也要显示,所以它的 hideIfNil 应该为 NO)。如果该字段为 nil 则默认是 NO
|
||
|
||
osVersion: 该属性需要的最低的 iOS 版本,比如 safeAreaInsets 从 iOS 11.0 开始出现,则该属性应该为 @11,如果为 nil 则表示不限制 iOS 版本
|
||
|
||
*/
|
||
+ (NSDictionary<NSString *, id> *)_infoForAttrID:(LookinAttrIdentifier)attrID {
|
||
static NSDictionary<LookinAttrIdentifier, NSDictionary<NSString *, id> *> *dict;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken,^{
|
||
dict = @{
|
||
LookinAttr_Class_Class_Class: @{
|
||
@"className": @"CALayer",
|
||
@"getterString": @"lks_relatedClassChainList",
|
||
@"setterString": @"",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj)
|
||
},
|
||
|
||
LookinAttr_Relation_Relation_Relation: @{
|
||
@"className": @"CALayer",
|
||
@"getterString": @"lks_selfRelation",
|
||
@"setterString": @"",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj),
|
||
@"hideIfNil": @(YES)
|
||
},
|
||
|
||
LookinAttr_Layout_Frame_Frame: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"Frame",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_Layout_Bounds_Bounds: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"Bounds",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_Layout_SafeArea_SafeArea: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"SafeAreaInsets",
|
||
@"setterString": @"",
|
||
@"osVersion": @(11)
|
||
},
|
||
LookinAttr_Layout_Position_Position: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"Position",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_Layout_AnchorPoint_AnchorPoint: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"AnchorPoint",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_AutoLayout_Hugging_Hor: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"ContentHuggingPriority(Horizontal)",
|
||
@"getterString": @"lks_horizontalContentHuggingPriority",
|
||
@"setterString": @"setLks_horizontalContentHuggingPriority:",
|
||
@"briefTitle": @"H",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_AutoLayout_Hugging_Ver: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"ContentHuggingPriority(Vertical)",
|
||
@"getterString": @"lks_verticalContentHuggingPriority",
|
||
@"setterString": @"setLks_verticalContentHuggingPriority:",
|
||
@"briefTitle": @"V",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_AutoLayout_Resistance_Hor: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"ContentCompressionResistancePriority(Horizontal)",
|
||
@"getterString": @"lks_horizontalContentCompressionResistancePriority",
|
||
@"setterString": @"setLks_horizontalContentCompressionResistancePriority:",
|
||
@"briefTitle": @"H",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_AutoLayout_Resistance_Ver: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"ContentCompressionResistancePriority(Vertical)",
|
||
@"getterString": @"lks_verticalContentCompressionResistancePriority",
|
||
@"setterString": @"setLks_verticalContentCompressionResistancePriority:",
|
||
@"briefTitle": @"V",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_AutoLayout_Constraints_Constraints: @{
|
||
@"className": @"UIView",
|
||
@"getterString": @"lks_constraints",
|
||
@"setterString": @"",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj),
|
||
@"hideIfNil": @(YES)
|
||
},
|
||
LookinAttr_AutoLayout_IntrinsicSize_Size: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"IntrinsicContentSize",
|
||
@"setterString": @""
|
||
},
|
||
|
||
LookinAttr_ViewLayer_Visibility_Hidden: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"Hidden",
|
||
@"getterString": @"isHidden",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Visibility_Opacity: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"Opacity / Alpha",
|
||
@"setterString": @"setOpacity:",
|
||
@"getterString": @"opacity",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_InterationAndMasks_Interaction: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"UserInteractionEnabled",
|
||
@"getterString": @"isUserInteractionEnabled",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_ViewLayer_InterationAndMasks_MasksToBounds: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"MasksToBounds / ClipsToBounds",
|
||
@"briefTitle": @"MasksToBounds",
|
||
@"setterString": @"setMasksToBounds:",
|
||
@"getterString": @"masksToBounds",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Corner_Radius: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"CornerRadius",
|
||
@"briefTitle": @"",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_BgColor_BgColor: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"BackgroundColor",
|
||
@"setterString": @"setLks_backgroundColor:",
|
||
@"getterString": @"lks_backgroundColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Border_Color: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"BorderColor",
|
||
@"setterString": @"setLks_borderColor:",
|
||
@"getterString": @"lks_borderColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Border_Width: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"BorderWidth",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Shadow_Color: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"ShadowColor",
|
||
@"setterString": @"setLks_shadowColor:",
|
||
@"getterString": @"lks_shadowColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Shadow_Opacity: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"ShadowOpacity",
|
||
@"briefTitle": @"Opacity",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Shadow_Radius: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"ShadowRadius",
|
||
@"briefTitle": @"Radius",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Shadow_OffsetW: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"ShadowOffsetWidth",
|
||
@"briefTitle": @"OffsetW",
|
||
@"setterString": @"setLks_shadowOffsetWidth:",
|
||
@"getterString": @"lks_shadowOffsetWidth",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Shadow_OffsetH: @{
|
||
@"className": @"CALayer",
|
||
@"fullTitle": @"ShadowOffsetHeight",
|
||
@"briefTitle": @"OffsetH",
|
||
@"setterString": @"setLks_shadowOffsetHeight:",
|
||
@"getterString": @"lks_shadowOffsetHeight",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_ContentMode_Mode: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"ContentMode",
|
||
@"enumList": @"UIViewContentMode",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_TintColor_Color: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"TintColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_TintColor_Mode: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"TintAdjustmentMode",
|
||
@"enumList": @"UIViewTintAdjustmentMode",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_ViewLayer_Tag_Tag: @{
|
||
@"className": @"UIView",
|
||
@"fullTitle": @"Tag",
|
||
@"briefTitle": @"",
|
||
@"patch": @(NO)
|
||
},
|
||
|
||
LookinAttr_UIStackView_Axis_Axis: @{
|
||
@"className": @"UIStackView",
|
||
@"fullTitle": @"Axis",
|
||
@"enumList": @"UILayoutConstraintAxis",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIStackView_Distribution_Distribution: @{
|
||
@"className": @"UIStackView",
|
||
@"fullTitle": @"Distribution",
|
||
@"enumList": @"UIStackViewDistribution",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIStackView_Alignment_Alignment: @{
|
||
@"className": @"UIStackView",
|
||
@"fullTitle": @"Alignment",
|
||
@"enumList": @"UIStackViewAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIStackView_Spacing_Spacing: @{
|
||
@"className": @"UIStackView",
|
||
@"fullTitle": @"Spacing",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIVisualEffectView_Style_Style: @{
|
||
@"className": @"UIVisualEffectView",
|
||
@"setterString": @"setLks_blurEffectStyleNumber:",
|
||
@"getterString": @"lks_blurEffectStyleNumber",
|
||
@"enumList": @"UIBlurEffectStyle",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj),
|
||
@"patch": @(YES),
|
||
@"hideIfNil": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIVisualEffectView_QMUIForegroundColor_Color: @{
|
||
@"className": @"QMUIVisualEffectView",
|
||
@"fullTitle": @"ForegroundColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES),
|
||
},
|
||
|
||
LookinAttr_UIImageView_Name_Name: @{
|
||
@"className": @"UIImageView",
|
||
@"fullTitle": @"ImageName",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_imageSourceName",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"hideIfNil": @(YES)
|
||
},
|
||
LookinAttr_UIImageView_Open_Open: @{
|
||
@"className": @"UIImageView",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_imageViewOidIfHasImage",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj),
|
||
@"hideIfNil": @(YES)
|
||
},
|
||
|
||
LookinAttr_UILabel_Text_Text: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"Text",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_NumberOfLines_NumberOfLines: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"NumberOfLines",
|
||
@"briefTitle": @"",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_Font_Size: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"FontSize",
|
||
@"briefTitle": @"FontSize",
|
||
@"setterString": @"setLks_fontSize:",
|
||
@"getterString": @"lks_fontSize",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_Font_Name: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"FontName",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_fontName",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UILabel_TextColor_Color: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"TextColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_Alignment_Alignment: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"TextAlignment",
|
||
@"enumList": @"NSTextAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_BreakMode_Mode: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"LineBreakMode",
|
||
@"enumList": @"NSLineBreakMode",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UILabel_CanAdjustFont_CanAdjustFont: @{
|
||
@"className": @"UILabel",
|
||
@"fullTitle": @"AdjustsFontSizeToFitWidth",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIControl_EnabledSelected_Enabled: @{
|
||
@"className": @"UIControl",
|
||
@"fullTitle": @"Enabled",
|
||
@"getterString": @"isEnabled",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIControl_EnabledSelected_Selected: @{
|
||
@"className": @"UIControl",
|
||
@"fullTitle": @"Selected",
|
||
@"getterString": @"isSelected",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIControl_VerAlignment_Alignment: @{
|
||
@"className": @"UIControl",
|
||
@"fullTitle": @"ContentVerticalAlignment",
|
||
@"enumList": @"UIControlContentVerticalAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIControl_HorAlignment_Alignment: @{
|
||
@"className": @"UIControl",
|
||
@"fullTitle": @"ContentHorizontalAlignment",
|
||
@"enumList": @"UIControlContentHorizontalAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIControl_QMUIOutsideEdge_Edge: @{
|
||
@"className": @"UIControl",
|
||
@"fullTitle": @"qmui_outsideEdge"
|
||
},
|
||
|
||
LookinAttr_UIButton_ContentInsets_Insets: @{
|
||
@"className": @"UIButton",
|
||
@"fullTitle": @"ContentEdgeInsets",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIButton_TitleInsets_Insets: @{
|
||
@"className": @"UIButton",
|
||
@"fullTitle": @"TitleEdgeInsets",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIButton_ImageInsets_Insets: @{
|
||
@"className": @"UIButton",
|
||
@"fullTitle": @"ImageEdgeInsets",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UIScrollView_Offset_Offset: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ContentOffset",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIScrollView_ContentSize_Size: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ContentSize",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIScrollView_ContentInset_Inset: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ContentInset",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIScrollView_QMUIInitialInset_Inset: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"qmui_initialContentInset",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIScrollView_AdjustedInset_Inset: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"AdjustedContentInset",
|
||
@"setterString": @"",
|
||
@"osVersion": @(11)
|
||
},
|
||
LookinAttr_UIScrollView_Behavior_Behavior: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ContentInsetAdjustmentBehavior",
|
||
@"enumList": @"UIScrollViewContentInsetAdjustmentBehavior",
|
||
@"patch": @(YES),
|
||
@"osVersion": @(11)
|
||
},
|
||
LookinAttr_UIScrollView_IndicatorInset_Inset: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ScrollIndicatorInsets",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ScrollPaging_ScrollEnabled: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ScrollEnabled",
|
||
@"getterString": @"isScrollEnabled",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ScrollPaging_PagingEnabled: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"PagingEnabled",
|
||
@"getterString": @"isPagingEnabled",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_Bounce_Ver: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"AlwaysBounceVertical",
|
||
@"briefTitle": @"Vertical",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_Bounce_Hor: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"AlwaysBounceHorizontal",
|
||
@"briefTitle": @"Horizontal",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ShowsIndicator_Hor: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ShowsHorizontalScrollIndicator",
|
||
@"briefTitle": @"Horizontal",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ShowsIndicator_Ver: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ShowsVerticalScrollIndicator",
|
||
@"briefTitle": @"Vertical",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ContentTouches_Delay: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"DelaysContentTouches",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_ContentTouches_CanCancel: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"CanCancelContentTouches",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_Zoom_MinScale: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"MinimumZoomScale",
|
||
@"briefTitle": @"MinScale",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_Zoom_MaxScale: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"MaximumZoomScale",
|
||
@"briefTitle": @"MaxScale",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UIScrollView_Zoom_Scale: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"ZoomScale",
|
||
@"briefTitle": @"Scale",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UIScrollView_Zoom_Bounce: @{
|
||
@"className": @"UIScrollView",
|
||
@"fullTitle": @"BouncesZoom",
|
||
@"patch": @(NO)
|
||
},
|
||
|
||
LookinAttr_UITableView_Style_Style: @{
|
||
@"className": @"UITableView",
|
||
@"fullTitle": @"Style",
|
||
@"setterString": @"",
|
||
@"enumList": @"UITableViewStyle",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITableView_SectionsNumber_Number: @{
|
||
@"className": @"UITableView",
|
||
@"fullTitle": @"NumberOfSections",
|
||
@"setterString": @"",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITableView_RowsNumber_Number: @{
|
||
@"className": @"UITableView",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_numberOfRows",
|
||
@"typeIfObj": @(LookinAttrTypeCustomObj)
|
||
},
|
||
LookinAttr_UITableView_SeparatorInset_Inset: @{
|
||
@"className": @"UITableView",
|
||
@"fullTitle": @"SeparatorInset",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITableView_SeparatorColor_Color: @{
|
||
@"className": @"UITableView",
|
||
@"fullTitle": @"SeparatorColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITableView_SeparatorStyle_Style: @{
|
||
@"className": @"UITableView",
|
||
@"fullTitle": @"SeparatorStyle",
|
||
@"enumList": @"UITableViewCellSeparatorStyle",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UITextView_Text_Text: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"Text",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextView_Font_Name: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"FontName",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_fontName",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextView_Font_Size: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"FontSize",
|
||
@"setterString": @"setLks_fontSize:",
|
||
@"getterString": @"lks_fontSize",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextView_Basic_Editable: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"Editable",
|
||
@"getterString": @"isEditable",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextView_Basic_Selectable: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"Selectable",
|
||
@"getterString": @"isSelectable",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextView_TextColor_Color: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"TextColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextView_Alignment_Alignment: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"TextAlignment",
|
||
@"enumList": @"NSTextAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextView_ContainerInset_Inset: @{
|
||
@"className": @"UITextView",
|
||
@"fullTitle": @"TextContainerInset",
|
||
@"patch": @(YES)
|
||
},
|
||
|
||
LookinAttr_UITextField_Font_Name: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"FontName",
|
||
@"setterString": @"",
|
||
@"getterString": @"lks_fontName",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextField_Font_Size: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"FontSize",
|
||
@"setterString": @"setLks_fontSize:",
|
||
@"getterString": @"lks_fontSize",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_TextColor_Color: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"TextColor",
|
||
@"typeIfObj": @(LookinAttrTypeUIColor),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_Alignment_Alignment: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"TextAlignment",
|
||
@"enumList": @"NSTextAlignment",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_Text_Text: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"Text",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_Placeholder_Placeholder: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"Placeholder",
|
||
@"typeIfObj": @(LookinAttrTypeNSString),
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_Clears_ClearsOnBeginEditing: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"ClearsOnBeginEditing",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextField_Clears_ClearsOnInsertion: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"ClearsOnInsertion",
|
||
@"patch": @(NO)
|
||
},
|
||
LookinAttr_UITextField_CanAdjustFont_CanAdjustFont: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"AdjustsFontSizeToFitWidth",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_CanAdjustFont_MinSize: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"MinimumFontSize",
|
||
@"patch": @(YES)
|
||
},
|
||
LookinAttr_UITextField_ClearButtonMode_Mode: @{
|
||
@"className": @"UITextField",
|
||
@"fullTitle": @"ClearButtonMode",
|
||
@"enumList": @"UITextFieldViewMode",
|
||
@"patch": @(NO)
|
||
},
|
||
};
|
||
});
|
||
|
||
NSDictionary<NSString *, id> *targetInfo = dict[attrID];
|
||
return targetInfo;
|
||
}
|
||
|
||
+ (LookinAttrType)objectAttrTypeWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSNumber *typeIfObj = attrInfo[@"typeIfObj"];
|
||
return [typeIfObj integerValue];
|
||
}
|
||
|
||
+ (NSString *)classNameWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *className = attrInfo[@"className"];
|
||
|
||
NSAssert(className.length > 0, @"");
|
||
|
||
return className;
|
||
}
|
||
|
||
+ (BOOL)isUIViewPropertyWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSString *className = [self classNameWithAttrID:attrID];
|
||
|
||
if ([className isEqualToString:@"CALayer"]) {
|
||
return NO;
|
||
}
|
||
return YES;
|
||
}
|
||
|
||
+ (NSString *)enumListNameWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *name = attrInfo[@"enumList"];
|
||
return name;
|
||
}
|
||
|
||
+ (BOOL)needPatchAfterModificationWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSNumber *needPatch = attrInfo[@"patch"];
|
||
return [needPatch boolValue];
|
||
}
|
||
|
||
+ (NSString *)fullTitleWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *fullTitle = attrInfo[@"fullTitle"];
|
||
return fullTitle;
|
||
}
|
||
|
||
+ (NSString *)briefTitleWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *briefTitle = attrInfo[@"briefTitle"];
|
||
if (!briefTitle) {
|
||
briefTitle = attrInfo[@"fullTitle"];
|
||
}
|
||
return briefTitle;
|
||
}
|
||
|
||
+ (SEL)getterWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *getterString = attrInfo[@"getterString"];
|
||
if (getterString && getterString.length == 0) {
|
||
// 空字符串,比如 image_open_open
|
||
return nil;
|
||
}
|
||
if (!getterString) {
|
||
NSString *fullTitle = attrInfo[@"fullTitle"];
|
||
NSAssert(fullTitle.length > 0, @"");
|
||
|
||
getterString = [NSString stringWithFormat:@"%@%@", [fullTitle substringToIndex:1].lowercaseString, [fullTitle substringFromIndex:1]].copy;
|
||
}
|
||
return NSSelectorFromString(getterString);
|
||
}
|
||
|
||
+ (SEL)setterWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSString *setterString = attrInfo[@"setterString"];
|
||
if ([setterString isEqualToString:@""]) {
|
||
// 该属性不可在 Lookin 客户端中被修改
|
||
return nil;
|
||
}
|
||
if (!setterString) {
|
||
NSString *fullTitle = attrInfo[@"fullTitle"];
|
||
NSAssert(fullTitle.length > 0, @"");
|
||
|
||
setterString = [NSString stringWithFormat:@"set%@%@:", [fullTitle substringToIndex:1].uppercaseString, [fullTitle substringFromIndex:1]];
|
||
}
|
||
return NSSelectorFromString(setterString);
|
||
}
|
||
|
||
+ (BOOL)hideIfNilWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSNumber *boolValue = attrInfo[@"hideIfNil"];
|
||
return boolValue.boolValue;
|
||
}
|
||
|
||
+ (NSInteger)minAvailableOSVersionWithAttrID:(LookinAttrIdentifier)attrID {
|
||
NSDictionary<NSString *, id> *attrInfo = [self _infoForAttrID:attrID];
|
||
NSNumber *minVerNum = attrInfo[@"osVersion"];
|
||
NSInteger minVer = [minVerNum integerValue];
|
||
return minVer;
|
||
}
|
||
|
||
@end
|
||
|
||
#endif /* SHOULD_COMPILE_LOOKIN_SERVER */
|