├── README.md └── TABCardProject ├── TABCardProject.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── anwenhu.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── anwenhu.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── TABCardProject ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── 占位图.imageset │ │ ├── Contents.json │ │ └── 占位图.png ├── CardView.h ├── CardView.m ├── Info.plist ├── LaunchScreen.storyboard ├── Source │ ├── 1.jpg │ ├── 10.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ ├── 9.jpg │ └── 旅游攻略chen 5.2.3 │ │ ├── DistributionSummary.plist │ │ ├── ExportOptions.plist │ │ └── Packaging.log ├── TABCardView │ ├── TABBaseCardView.h │ ├── TABBaseCardView.m │ ├── TABCardView.h │ └── TABCardView.m ├── TABDefine.h ├── ViewController.h ├── ViewController.m └── main.m └── TABCardView.podspec /README.md: -------------------------------------------------------------------------------- 1 | ## 本文目录 2 | 3 | > + 效果图 4 | > + 使用方法 5 | > + 实现说明 6 | 7 | ## 效果图 8 | 9 | ![效果图.gif](https://upload-images.jianshu.io/upload_images/5632003-1063fefc1b7a2b96.gif?imageMogr2/auto-orient/strip) 10 | 11 | ## 使用方法 12 | **1. install** 13 | > pod search TABCardView 14 | 15 | **2. 初始化** 16 | ``` 17 | /** 18 | 初始化方法 19 | 20 | @param frame 位置 21 | @param showCardsNumber 显示的卡片数 22 | @return TABCardView's object 23 | */ 24 | - (instancetype)initWithFrame:(CGRect)frame 25 | showCardsNumber:(NSInteger)showCardsNumber; 26 | ``` 27 | ``` 28 | // 简单使用示例 29 | self.cardView = [[TABCardView alloc] initWithFrame:CGRectMake(40, (kScreenHeight - 320)/2, kScreenWidth - 120, 320) 30 | showCardsNumber:4]; 31 | self.cardView.isShowNoDataView = YES; 32 | self.cardView.noDataView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"占位图"]]; 33 | self.cardView.delegate = self; 34 | [self.view addSubview:self.cardView]; 35 | ``` 36 | 3. 刷新数据源 37 | ``` 38 | // 使用示例 39 | [self.cardView loadCardViewWithData:array]; 40 | ``` 41 | 4. 参数说明 42 | >1. `showCardsNumber` 需要展示的卡片数 43 | >2. `isShowNoDataView` 是否在没有数据时,显示卡片 44 | >3. `noDataView` 没有数据时,显示的view 45 | >4. `offsetX` 展示卡片的横坐标偏移量,默认为20,决定卡片堆叠方式 46 | >5. `offsetY` 展示卡片的纵坐标偏移量,默认为0,决定卡片堆叠方式 47 | 48 | ## 说明 49 | >1. 卡片组是一个view 50 | >2. 卡片组由多个TABBaseCardView组成,你可以继承TABBaseCardView,定制自己的卡片内容,不只是一张图 51 | >3. 代理目前的作用是:告诉你当前是哪个卡片 52 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 20233DAD21C88AA20077D672 /* 1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20233DAC21C88AA20077D672 /* 1.jpg */; }; 11 | 205664CD248895BD00AC16D9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 205664CC248895BD00AC16D9 /* LaunchScreen.storyboard */; }; 12 | 2078161A21C73E4C00D3EF63 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2078161921C73E4C00D3EF63 /* AppDelegate.m */; }; 13 | 2078161D21C73E4C00D3EF63 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2078161C21C73E4C00D3EF63 /* ViewController.m */; }; 14 | 2078162221C73E4F00D3EF63 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2078162121C73E4F00D3EF63 /* Assets.xcassets */; }; 15 | 2078162821C73E4F00D3EF63 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2078162721C73E4F00D3EF63 /* main.m */; }; 16 | 20D4D0F121C7BF5E0062BF07 /* CardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D4D0F021C7BF5E0062BF07 /* CardView.m */; }; 17 | 20D4D10A21C884790062BF07 /* 4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10121C884780062BF07 /* 4.jpg */; }; 18 | 20D4D10B21C884790062BF07 /* 7.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10221C884780062BF07 /* 7.jpg */; }; 19 | 20D4D10C21C884790062BF07 /* 9.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10321C884780062BF07 /* 9.jpg */; }; 20 | 20D4D10D21C884790062BF07 /* 3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10421C884780062BF07 /* 3.jpg */; }; 21 | 20D4D10E21C884790062BF07 /* 10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10521C884780062BF07 /* 10.jpg */; }; 22 | 20D4D10F21C884790062BF07 /* 8.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10621C884780062BF07 /* 8.jpg */; }; 23 | 20D4D11021C884790062BF07 /* 5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10721C884780062BF07 /* 5.jpg */; }; 24 | 20D4D11121C884790062BF07 /* 6.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10821C884790062BF07 /* 6.jpg */; }; 25 | 20D4D11221C884790062BF07 /* 2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 20D4D10921C884790062BF07 /* 2.jpg */; }; 26 | 20D85F7321C77E15000FA5C2 /* TABCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D85F7221C77E15000FA5C2 /* TABCardView.m */; }; 27 | 20D85F7921C78559000FA5C2 /* TABBaseCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D85F7821C78559000FA5C2 /* TABBaseCardView.m */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 20233DAC21C88AA20077D672 /* 1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 1.jpg; sourceTree = ""; }; 32 | 205664CC248895BD00AC16D9 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 33 | 2078161521C73E4C00D3EF63 /* TABCardProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TABCardProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 2078161821C73E4C00D3EF63 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 35 | 2078161921C73E4C00D3EF63 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 36 | 2078161B21C73E4C00D3EF63 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 37 | 2078161C21C73E4C00D3EF63 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 38 | 2078162121C73E4F00D3EF63 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 39 | 2078162621C73E4F00D3EF63 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 40 | 2078162721C73E4F00D3EF63 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 41 | 2078164A21C745CD00D3EF63 /* TABDefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TABDefine.h; sourceTree = ""; }; 42 | 20D4D0EF21C7BF5E0062BF07 /* CardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CardView.h; sourceTree = ""; }; 43 | 20D4D0F021C7BF5E0062BF07 /* CardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CardView.m; sourceTree = ""; }; 44 | 20D4D10121C884780062BF07 /* 4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 4.jpg; sourceTree = ""; }; 45 | 20D4D10221C884780062BF07 /* 7.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 7.jpg; sourceTree = ""; }; 46 | 20D4D10321C884780062BF07 /* 9.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 9.jpg; sourceTree = ""; }; 47 | 20D4D10421C884780062BF07 /* 3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 3.jpg; sourceTree = ""; }; 48 | 20D4D10521C884780062BF07 /* 10.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 10.jpg; sourceTree = ""; }; 49 | 20D4D10621C884780062BF07 /* 8.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 8.jpg; sourceTree = ""; }; 50 | 20D4D10721C884780062BF07 /* 5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 5.jpg; sourceTree = ""; }; 51 | 20D4D10821C884790062BF07 /* 6.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 6.jpg; sourceTree = ""; }; 52 | 20D4D10921C884790062BF07 /* 2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 2.jpg; sourceTree = ""; }; 53 | 20D85F7121C77E15000FA5C2 /* TABCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TABCardView.h; sourceTree = ""; }; 54 | 20D85F7221C77E15000FA5C2 /* TABCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TABCardView.m; sourceTree = ""; }; 55 | 20D85F7721C78559000FA5C2 /* TABBaseCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TABBaseCardView.h; sourceTree = ""; }; 56 | 20D85F7821C78559000FA5C2 /* TABBaseCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TABBaseCardView.m; sourceTree = ""; }; 57 | /* End PBXFileReference section */ 58 | 59 | /* Begin PBXFrameworksBuildPhase section */ 60 | 2078161221C73E4C00D3EF63 /* Frameworks */ = { 61 | isa = PBXFrameworksBuildPhase; 62 | buildActionMask = 2147483647; 63 | files = ( 64 | ); 65 | runOnlyForDeploymentPostprocessing = 0; 66 | }; 67 | /* End PBXFrameworksBuildPhase section */ 68 | 69 | /* Begin PBXGroup section */ 70 | 2078160C21C73E4C00D3EF63 = { 71 | isa = PBXGroup; 72 | children = ( 73 | 2078161721C73E4C00D3EF63 /* TABCardProject */, 74 | 2078161621C73E4C00D3EF63 /* Products */, 75 | B053679B7E96E46E73F936D6 /* Frameworks */, 76 | ); 77 | sourceTree = ""; 78 | }; 79 | 2078161621C73E4C00D3EF63 /* Products */ = { 80 | isa = PBXGroup; 81 | children = ( 82 | 2078161521C73E4C00D3EF63 /* TABCardProject.app */, 83 | ); 84 | name = Products; 85 | sourceTree = ""; 86 | }; 87 | 2078161721C73E4C00D3EF63 /* TABCardProject */ = { 88 | isa = PBXGroup; 89 | children = ( 90 | 20D4D0F421C881850062BF07 /* Source */, 91 | 20D4D0F521C881850062BF07 /* TABCardView */, 92 | 20D4D0EF21C7BF5E0062BF07 /* CardView.h */, 93 | 20D4D0F021C7BF5E0062BF07 /* CardView.m */, 94 | 2078161821C73E4C00D3EF63 /* AppDelegate.h */, 95 | 2078161921C73E4C00D3EF63 /* AppDelegate.m */, 96 | 2078161B21C73E4C00D3EF63 /* ViewController.h */, 97 | 2078161C21C73E4C00D3EF63 /* ViewController.m */, 98 | 2078164A21C745CD00D3EF63 /* TABDefine.h */, 99 | 2078162121C73E4F00D3EF63 /* Assets.xcassets */, 100 | 2078162621C73E4F00D3EF63 /* Info.plist */, 101 | 2078162721C73E4F00D3EF63 /* main.m */, 102 | 205664CC248895BD00AC16D9 /* LaunchScreen.storyboard */, 103 | ); 104 | path = TABCardProject; 105 | sourceTree = ""; 106 | }; 107 | 20D4D0F421C881850062BF07 /* Source */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 20233DAC21C88AA20077D672 /* 1.jpg */, 111 | 20D4D10921C884790062BF07 /* 2.jpg */, 112 | 20D4D10421C884780062BF07 /* 3.jpg */, 113 | 20D4D10121C884780062BF07 /* 4.jpg */, 114 | 20D4D10721C884780062BF07 /* 5.jpg */, 115 | 20D4D10821C884790062BF07 /* 6.jpg */, 116 | 20D4D10221C884780062BF07 /* 7.jpg */, 117 | 20D4D10621C884780062BF07 /* 8.jpg */, 118 | 20D4D10321C884780062BF07 /* 9.jpg */, 119 | 20D4D10521C884780062BF07 /* 10.jpg */, 120 | ); 121 | path = Source; 122 | sourceTree = ""; 123 | }; 124 | 20D4D0F521C881850062BF07 /* TABCardView */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 20D85F7721C78559000FA5C2 /* TABBaseCardView.h */, 128 | 20D85F7821C78559000FA5C2 /* TABBaseCardView.m */, 129 | 20D85F7121C77E15000FA5C2 /* TABCardView.h */, 130 | 20D85F7221C77E15000FA5C2 /* TABCardView.m */, 131 | ); 132 | path = TABCardView; 133 | sourceTree = ""; 134 | }; 135 | B053679B7E96E46E73F936D6 /* Frameworks */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | ); 139 | name = Frameworks; 140 | sourceTree = ""; 141 | }; 142 | /* End PBXGroup section */ 143 | 144 | /* Begin PBXNativeTarget section */ 145 | 2078161421C73E4C00D3EF63 /* TABCardProject */ = { 146 | isa = PBXNativeTarget; 147 | buildConfigurationList = 2078164121C73E4F00D3EF63 /* Build configuration list for PBXNativeTarget "TABCardProject" */; 148 | buildPhases = ( 149 | 2078161121C73E4C00D3EF63 /* Sources */, 150 | 2078161221C73E4C00D3EF63 /* Frameworks */, 151 | 2078161321C73E4C00D3EF63 /* Resources */, 152 | ); 153 | buildRules = ( 154 | ); 155 | dependencies = ( 156 | ); 157 | name = TABCardProject; 158 | productName = TABCardProject; 159 | productReference = 2078161521C73E4C00D3EF63 /* TABCardProject.app */; 160 | productType = "com.apple.product-type.application"; 161 | }; 162 | /* End PBXNativeTarget section */ 163 | 164 | /* Begin PBXProject section */ 165 | 2078160D21C73E4C00D3EF63 /* Project object */ = { 166 | isa = PBXProject; 167 | attributes = { 168 | LastUpgradeCheck = 1000; 169 | ORGANIZATIONNAME = tigerAndBull; 170 | TargetAttributes = { 171 | 2078161421C73E4C00D3EF63 = { 172 | CreatedOnToolsVersion = 10.0; 173 | }; 174 | }; 175 | }; 176 | buildConfigurationList = 2078161021C73E4C00D3EF63 /* Build configuration list for PBXProject "TABCardProject" */; 177 | compatibilityVersion = "Xcode 9.3"; 178 | developmentRegion = en; 179 | hasScannedForEncodings = 0; 180 | knownRegions = ( 181 | en, 182 | Base, 183 | ); 184 | mainGroup = 2078160C21C73E4C00D3EF63; 185 | productRefGroup = 2078161621C73E4C00D3EF63 /* Products */; 186 | projectDirPath = ""; 187 | projectRoot = ""; 188 | targets = ( 189 | 2078161421C73E4C00D3EF63 /* TABCardProject */, 190 | ); 191 | }; 192 | /* End PBXProject section */ 193 | 194 | /* Begin PBXResourcesBuildPhase section */ 195 | 2078161321C73E4C00D3EF63 /* Resources */ = { 196 | isa = PBXResourcesBuildPhase; 197 | buildActionMask = 2147483647; 198 | files = ( 199 | 20233DAD21C88AA20077D672 /* 1.jpg in Resources */, 200 | 20D4D11221C884790062BF07 /* 2.jpg in Resources */, 201 | 20D4D10A21C884790062BF07 /* 4.jpg in Resources */, 202 | 20D4D10E21C884790062BF07 /* 10.jpg in Resources */, 203 | 2078162221C73E4F00D3EF63 /* Assets.xcassets in Resources */, 204 | 20D4D11021C884790062BF07 /* 5.jpg in Resources */, 205 | 205664CD248895BD00AC16D9 /* LaunchScreen.storyboard in Resources */, 206 | 20D4D11121C884790062BF07 /* 6.jpg in Resources */, 207 | 20D4D10F21C884790062BF07 /* 8.jpg in Resources */, 208 | 20D4D10D21C884790062BF07 /* 3.jpg in Resources */, 209 | 20D4D10C21C884790062BF07 /* 9.jpg in Resources */, 210 | 20D4D10B21C884790062BF07 /* 7.jpg in Resources */, 211 | ); 212 | runOnlyForDeploymentPostprocessing = 0; 213 | }; 214 | /* End PBXResourcesBuildPhase section */ 215 | 216 | /* Begin PBXSourcesBuildPhase section */ 217 | 2078161121C73E4C00D3EF63 /* Sources */ = { 218 | isa = PBXSourcesBuildPhase; 219 | buildActionMask = 2147483647; 220 | files = ( 221 | 2078161D21C73E4C00D3EF63 /* ViewController.m in Sources */, 222 | 2078162821C73E4F00D3EF63 /* main.m in Sources */, 223 | 20D4D0F121C7BF5E0062BF07 /* CardView.m in Sources */, 224 | 20D85F7321C77E15000FA5C2 /* TABCardView.m in Sources */, 225 | 20D85F7921C78559000FA5C2 /* TABBaseCardView.m in Sources */, 226 | 2078161A21C73E4C00D3EF63 /* AppDelegate.m in Sources */, 227 | ); 228 | runOnlyForDeploymentPostprocessing = 0; 229 | }; 230 | /* End PBXSourcesBuildPhase section */ 231 | 232 | /* Begin XCBuildConfiguration section */ 233 | 2078163F21C73E4F00D3EF63 /* Debug */ = { 234 | isa = XCBuildConfiguration; 235 | buildSettings = { 236 | ALWAYS_SEARCH_USER_PATHS = NO; 237 | CLANG_ANALYZER_NONNULL = YES; 238 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 240 | CLANG_CXX_LIBRARY = "libc++"; 241 | CLANG_ENABLE_MODULES = YES; 242 | CLANG_ENABLE_OBJC_ARC = YES; 243 | CLANG_ENABLE_OBJC_WEAK = YES; 244 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 245 | CLANG_WARN_BOOL_CONVERSION = YES; 246 | CLANG_WARN_COMMA = YES; 247 | CLANG_WARN_CONSTANT_CONVERSION = YES; 248 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 249 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 250 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 251 | CLANG_WARN_EMPTY_BODY = YES; 252 | CLANG_WARN_ENUM_CONVERSION = YES; 253 | CLANG_WARN_INFINITE_RECURSION = YES; 254 | CLANG_WARN_INT_CONVERSION = YES; 255 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 256 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 257 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 258 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 259 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 260 | CLANG_WARN_STRICT_PROTOTYPES = YES; 261 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 262 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 263 | CLANG_WARN_UNREACHABLE_CODE = YES; 264 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 265 | CODE_SIGN_IDENTITY = "iPhone Developer"; 266 | COPY_PHASE_STRIP = NO; 267 | DEBUG_INFORMATION_FORMAT = dwarf; 268 | ENABLE_STRICT_OBJC_MSGSEND = YES; 269 | ENABLE_TESTABILITY = YES; 270 | GCC_C_LANGUAGE_STANDARD = gnu11; 271 | GCC_DYNAMIC_NO_PIC = NO; 272 | GCC_NO_COMMON_BLOCKS = YES; 273 | GCC_OPTIMIZATION_LEVEL = 0; 274 | GCC_PREPROCESSOR_DEFINITIONS = ( 275 | "DEBUG=1", 276 | "$(inherited)", 277 | ); 278 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 279 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 280 | GCC_WARN_UNDECLARED_SELECTOR = YES; 281 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 282 | GCC_WARN_UNUSED_FUNCTION = YES; 283 | GCC_WARN_UNUSED_VARIABLE = YES; 284 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 285 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 286 | MTL_FAST_MATH = YES; 287 | ONLY_ACTIVE_ARCH = YES; 288 | SDKROOT = iphoneos; 289 | }; 290 | name = Debug; 291 | }; 292 | 2078164021C73E4F00D3EF63 /* Release */ = { 293 | isa = XCBuildConfiguration; 294 | buildSettings = { 295 | ALWAYS_SEARCH_USER_PATHS = NO; 296 | CLANG_ANALYZER_NONNULL = YES; 297 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 298 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 299 | CLANG_CXX_LIBRARY = "libc++"; 300 | CLANG_ENABLE_MODULES = YES; 301 | CLANG_ENABLE_OBJC_ARC = YES; 302 | CLANG_ENABLE_OBJC_WEAK = YES; 303 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 304 | CLANG_WARN_BOOL_CONVERSION = YES; 305 | CLANG_WARN_COMMA = YES; 306 | CLANG_WARN_CONSTANT_CONVERSION = YES; 307 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 308 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 309 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 310 | CLANG_WARN_EMPTY_BODY = YES; 311 | CLANG_WARN_ENUM_CONVERSION = YES; 312 | CLANG_WARN_INFINITE_RECURSION = YES; 313 | CLANG_WARN_INT_CONVERSION = YES; 314 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 315 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 316 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 317 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 318 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 319 | CLANG_WARN_STRICT_PROTOTYPES = YES; 320 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 321 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 322 | CLANG_WARN_UNREACHABLE_CODE = YES; 323 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 324 | CODE_SIGN_IDENTITY = "iPhone Developer"; 325 | COPY_PHASE_STRIP = NO; 326 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 327 | ENABLE_NS_ASSERTIONS = NO; 328 | ENABLE_STRICT_OBJC_MSGSEND = YES; 329 | GCC_C_LANGUAGE_STANDARD = gnu11; 330 | GCC_NO_COMMON_BLOCKS = YES; 331 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 332 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 333 | GCC_WARN_UNDECLARED_SELECTOR = YES; 334 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 335 | GCC_WARN_UNUSED_FUNCTION = YES; 336 | GCC_WARN_UNUSED_VARIABLE = YES; 337 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 338 | MTL_ENABLE_DEBUG_INFO = NO; 339 | MTL_FAST_MATH = YES; 340 | SDKROOT = iphoneos; 341 | VALIDATE_PRODUCT = YES; 342 | }; 343 | name = Release; 344 | }; 345 | 2078164221C73E4F00D3EF63 /* Debug */ = { 346 | isa = XCBuildConfiguration; 347 | buildSettings = { 348 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 349 | CODE_SIGN_STYLE = Automatic; 350 | CURRENT_PROJECT_VERSION = 0.0.2; 351 | DEVELOPMENT_TEAM = JGZKPAYJ7R; 352 | INFOPLIST_FILE = TABCardProject/Info.plist; 353 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 354 | LD_RUNPATH_SEARCH_PATHS = ( 355 | "$(inherited)", 356 | "@executable_path/Frameworks", 357 | ); 358 | MARKETING_VERSION = 0.0.2; 359 | PRODUCT_BUNDLE_IDENTIFIER = com.tigerAndBull.TABCardProject; 360 | PRODUCT_NAME = "$(TARGET_NAME)"; 361 | TARGETED_DEVICE_FAMILY = "1,2"; 362 | }; 363 | name = Debug; 364 | }; 365 | 2078164321C73E4F00D3EF63 /* Release */ = { 366 | isa = XCBuildConfiguration; 367 | buildSettings = { 368 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 369 | CODE_SIGN_STYLE = Automatic; 370 | CURRENT_PROJECT_VERSION = 0.0.2; 371 | DEVELOPMENT_TEAM = JGZKPAYJ7R; 372 | INFOPLIST_FILE = TABCardProject/Info.plist; 373 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 374 | LD_RUNPATH_SEARCH_PATHS = ( 375 | "$(inherited)", 376 | "@executable_path/Frameworks", 377 | ); 378 | MARKETING_VERSION = 0.0.2; 379 | PRODUCT_BUNDLE_IDENTIFIER = com.tigerAndBull.TABCardProject; 380 | PRODUCT_NAME = "$(TARGET_NAME)"; 381 | TARGETED_DEVICE_FAMILY = "1,2"; 382 | }; 383 | name = Release; 384 | }; 385 | /* End XCBuildConfiguration section */ 386 | 387 | /* Begin XCConfigurationList section */ 388 | 2078161021C73E4C00D3EF63 /* Build configuration list for PBXProject "TABCardProject" */ = { 389 | isa = XCConfigurationList; 390 | buildConfigurations = ( 391 | 2078163F21C73E4F00D3EF63 /* Debug */, 392 | 2078164021C73E4F00D3EF63 /* Release */, 393 | ); 394 | defaultConfigurationIsVisible = 0; 395 | defaultConfigurationName = Release; 396 | }; 397 | 2078164121C73E4F00D3EF63 /* Build configuration list for PBXNativeTarget "TABCardProject" */ = { 398 | isa = XCConfigurationList; 399 | buildConfigurations = ( 400 | 2078164221C73E4F00D3EF63 /* Debug */, 401 | 2078164321C73E4F00D3EF63 /* Release */, 402 | ); 403 | defaultConfigurationIsVisible = 0; 404 | defaultConfigurationName = Release; 405 | }; 406 | /* End XCConfigurationList section */ 407 | }; 408 | rootObject = 2078160D21C73E4C00D3EF63 /* Project object */; 409 | } 410 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject.xcodeproj/project.xcworkspace/xcuserdata/anwenhu.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject.xcodeproj/project.xcworkspace/xcuserdata/anwenhu.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /TABCardProject/TABCardProject.xcodeproj/xcuserdata/anwenhu.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | TABCardProject.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow * window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "ViewController.h" 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | 19 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 20 | // Override point for customization after application launch. 21 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 22 | self.window.backgroundColor = [UIColor whiteColor]; 23 | ViewController *vc = [[ViewController alloc]init]; 24 | self.window.rootViewController = vc; 25 | [self.window makeKeyAndVisible]; 26 | return YES; 27 | } 28 | 29 | 30 | - (void)applicationWillResignActive:(UIApplication *)application { 31 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 32 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 33 | } 34 | 35 | 36 | - (void)applicationDidEnterBackground:(UIApplication *)application { 37 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 38 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 39 | } 40 | 41 | 42 | - (void)applicationWillEnterForeground:(UIApplication *)application { 43 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 44 | } 45 | 46 | 47 | - (void)applicationDidBecomeActive:(UIApplication *)application { 48 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 49 | } 50 | 51 | 52 | - (void)applicationWillTerminate:(UIApplication *)application { 53 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 54 | } 55 | 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Assets.xcassets/占位图.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "占位图.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Assets.xcassets/占位图.imageset/占位图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Assets.xcassets/占位图.imageset/占位图.png -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/CardView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CardView.h 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "CardView.h" 12 | #import "TABBaseCardView.h" 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | typedef void(^CardViewBlock)(void); 17 | 18 | @interface CardView : TABBaseCardView 19 | 20 | @property (nonatomic,strong) UIImageView * cardImg; 21 | @property (nonatomic,strong) UIButton * cardBtn; 22 | 23 | @property (nonatomic) CardViewBlock clickBlock; 24 | 25 | - (void)updateViewWithData:(NSString *)imageUrl; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/CardView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CardView.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import "CardView.h" 10 | 11 | @implementation CardView 12 | 13 | - (instancetype)initWithFrame:(CGRect)frame { 14 | if (self = [super initWithFrame:frame]) { 15 | 16 | { 17 | UIImageView *img = [[UIImageView alloc] init]; 18 | img.contentMode = UIViewContentModeScaleAspectFill; 19 | _cardImg = img; 20 | [self addSubview:img]; 21 | } 22 | 23 | { 24 | UIButton *btn = [[UIButton alloc] init]; 25 | [btn addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside]; 26 | [btn setBackgroundColor:[UIColor clearColor]]; 27 | 28 | _cardBtn = btn; 29 | [self addSubview:btn]; 30 | } 31 | } 32 | return self; 33 | } 34 | 35 | - (void)layoutSubviews { 36 | [super layoutSubviews]; 37 | _cardImg.frame = self.bounds; 38 | _cardBtn.frame = self.bounds; 39 | } 40 | 41 | - (void)updateViewWithData:(NSString *)imageUrl { 42 | [_cardImg setImage:[UIImage imageNamed:imageUrl]]; 43 | } 44 | 45 | - (void)action { 46 | if (self.clickBlock) { 47 | self.clickBlock(); 48 | } 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(MARKETING_VERSION) 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/1.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/10.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/2.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/3.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/4.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/5.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/6.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/7.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/8.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tigerAndBull/TABCardView/7aaa9ede96afc1d113c33e55a069b8cb2c696174/TABCardProject/TABCardProject/Source/9.jpg -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/旅游攻略chen 5.2.3/DistributionSummary.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 旅游攻略chen.ipa 6 | 7 | 8 | architectures 9 | 10 | armv7 11 | arm64 12 | 13 | certificate 14 | 15 | SHA1 16 | 81BFA4754CC4289C583291E10258EB200B1A99D4 17 | dateExpires 18 | 2019/3/1 19 | type 20 | iOS Distribution 21 | 22 | entitlements 23 | 24 | application-identifier 25 | Q6F5GPUR85.com.zhiyan.chen.splvyou 26 | aps-environment 27 | production 28 | beta-reports-active 29 | 30 | com.apple.developer.team-identifier 31 | Q6F5GPUR85 32 | get-task-allow 33 | 34 | 35 | name 36 | 旅游攻略chen.app 37 | profile 38 | 39 | UUID 40 | 39c9cf58-ead1-4024-8356-a6f8c492a570 41 | name 42 | iOS Team Store Provisioning Profile: com.zhiyan.chen.splvyou 43 | 44 | symbols 45 | 46 | team 47 | 48 | id 49 | Q6F5GPUR85 50 | name 51 | chen zhiyan 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/旅游攻略chen 5.2.3/ExportOptions.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | destination 6 | export 7 | method 8 | app-store 9 | signingStyle 10 | automatic 11 | stripSwiftSymbols 12 | 13 | teamID 14 | Q6F5GPUR85 15 | uploadSymbols 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/Source/旅游攻略chen 5.2.3/Packaging.log: -------------------------------------------------------------------------------- 1 | 2018-12-20 08:01:16 +0000 Initial pipeline context: '> 2 | Chain (12, self inclusive): 3 | '> 4 | '> 5 | '> 6 | '> 7 | '> 8 | '> 9 | '> 10 | '> 11 | '> 12 | 13 | 14 | 15 | 16 | 2018-12-20 08:01:16 +0000 Processing step: IDEDistributionCreateDestRootStep 17 | 2018-12-20 08:01:16 +0000 Processing step: IDEDistributionCopyItemStep 18 | 2018-12-20 08:01:16 +0000 Running /usr/bin/ditto '-V' '/Users/anwenhu/Library/Developer/Xcode/Archives/2018-12-20/旅游攻略chen 2018-12-20 下午4.00.xcarchive/Products/Applications/旅游攻略chen.app' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app' 19 | 2018-12-20 08:01:16 +0000 >>> Copying /Users/anwenhu/Library/Developer/Xcode/Archives/2018-12-20/旅游攻略chen 2018-12-20 下午4.00.xcarchive/Products/Applications/旅游攻略chen.app 20 | 2018-12-20 08:01:16 +0000 copying file ./_CodeSignature/CodeResources ... 21 | 2018-12-20 08:01:16 +0000 95319 bytes for ./_CodeSignature/CodeResources 22 | 2018-12-20 08:01:16 +0000 copying file ./AppIcon_Chen_LYGL20x20@2x~ipad.png ... 23 | 2018-12-20 08:01:16 +0000 2136 bytes for ./AppIcon_Chen_LYGL20x20@2x~ipad.png 24 | 2018-12-20 08:01:16 +0000 copying file ./zh-Hans.lproj/InfoPlist.strings ... 25 | 2018-12-20 08:01:16 +0000 42 bytes for ./zh-Hans.lproj/InfoPlist.strings 26 | 2018-12-20 08:01:16 +0000 copying file ./旅游攻略chen ... 27 | 2018-12-20 08:01:18 +0000 50089744 bytes for ./旅游攻略chen 28 | 2018-12-20 08:01:18 +0000 copying file ./LaunchImage_Chen_LYGL-1200-Portrait-2688h@3x.png ... 29 | 2018-12-20 08:01:18 +0000 63536 bytes for ./LaunchImage_Chen_LYGL-1200-Portrait-2688h@3x.png 30 | 2018-12-20 08:01:18 +0000 copying file ./back@2x.png ... 31 | 2018-12-20 08:01:18 +0000 293 bytes for ./back@2x.png 32 | 2018-12-20 08:01:18 +0000 copying file ./en.lproj/InfoPlist.strings ... 33 | 2018-12-20 08:01:18 +0000 42 bytes for ./en.lproj/InfoPlist.strings 34 | copying file ./AppIcon_Chen_LYGL29x29@2x~ipad.png ... 35 | 2018-12-20 08:01:18 +0000 3237 bytes for ./AppIcon_Chen_LYGL29x29@2x~ipad.png 36 | 2018-12-20 08:01:18 +0000 copying file ./LaunchImage_Chen_LYGL-700-568h@2x.png ... 37 | 2018-12-20 08:01:18 +0000 24844 bytes for ./LaunchImage_Chen_LYGL-700-568h@2x.png 38 | 2018-12-20 08:01:18 +0000 copying file ./WeiboSDK.bundle/images/common_button_white_highlighted@2x.png ... 39 | 378 bytes for ./WeiboSDK.bundle/images/common_button_white_highlighted@2x.png 40 | copying file ./WeiboSDK.bundle/images/common_button_white@2x.png ... 41 | 367 bytes for ./WeiboSDK.bundle/images/common_button_white@2x.png 42 | copying file ./WeiboSDK.bundle/images/empty_failed@2x.png ... 43 | 2018-12-20 08:01:18 +0000 4136 bytes for ./WeiboSDK.bundle/images/empty_failed@2x.png 44 | 2018-12-20 08:01:18 +0000 copying file ./WeiboSDK.bundle/others/mfp.cer ... 45 | 577 bytes for ./WeiboSDK.bundle/others/mfp.cer 46 | copying file ./back@3x.png ... 47 | 966 bytes for ./back@3x.png 48 | copying file ./back@2x~ipad.png ... 49 | 221 bytes for ./back@2x~ipad.png 50 | copying file ./AppIcon_Chen_LYGL29x29~ipad.png ... 51 | 1462 bytes for ./AppIcon_Chen_LYGL29x29~ipad.png 52 | copying file ./cloud.bundle/play_noband@2x.ytcx ... 53 | 1922 bytes for ./cloud.bundle/play_noband@2x.ytcx 54 | copying file ./cloud.bundle/mute.mp3 ... 55 | 2018-12-20 08:01:18 +0000 60343 bytes for ./cloud.bundle/mute.mp3 56 | 2018-12-20 08:01:18 +0000 copying file ./cloud.bundle/corner_tudou_gray@3x.ytcx ... 57 | 2018-12-20 08:01:19 +0000 16450 bytes for ./cloud.bundle/corner_tudou_gray@3x.ytcx 58 | copying file ./cloud.bundle/toggle_quality@2x~ipad.ytcx ... 59 | 2018-12-20 08:01:19 +0000 5810 bytes for ./cloud.bundle/toggle_quality@2x~ipad.ytcx 60 | 2018-12-20 08:01:19 +0000 copying file ./cloud.bundle/ad_arrow@2x~ipad.ytcx ... 61 | 1202 bytes for ./cloud.bundle/ad_arrow@2x~ipad.ytcx 62 | copying file ./cloud.bundle/bplay@2x.ytcx ... 63 | 3730 bytes for ./cloud.bundle/bplay@2x.ytcx 64 | copying file ./cloud.bundle/player_logo_full_tudou@2x~ipad.ytcx ... 65 | 2018-12-20 08:01:19 +0000 82818 bytes for ./cloud.bundle/player_logo_full_tudou@2x~ipad.ytcx 66 | copying file ./cloud.bundle/loading_normal@3x.ytcx ... 67 | 1474 bytes for ./cloud.bundle/loading_normal@3x.ytcx 68 | copying file ./cloud.bundle/ad_fullscreen~ipad.ytcx ... 69 | 1810 bytes for ./cloud.bundle/ad_fullscreen~ipad.ytcx 70 | copying file ./cloud.bundle/player_logo_full_tudou@3x.ytcx ... 71 | 2018-12-20 08:01:19 +0000 6914 bytes for ./cloud.bundle/player_logo_full_tudou@3x.ytcx 72 | 2018-12-20 08:01:19 +0000 copying file ./cloud.bundle/player_logo_full@3x.ytcx ... 73 | 2018-12-20 08:01:19 +0000 6562 bytes for ./cloud.bundle/player_logo_full@3x.ytcx 74 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play@3x.ytcx ... 75 | 1362 bytes for ./cloud.bundle/tip_play@3x.ytcx 76 | copying file ./cloud.bundle/corner_tudou~ipad.ytcx ... 77 | 2018-12-20 08:01:20 +0000 67570 bytes for ./cloud.bundle/corner_tudou~ipad.ytcx 78 | copying file ./cloud.bundle/ad_volume@2x~ipad.ytcx ... 79 | 2018-12-20 08:01:20 +0000 2770 bytes for ./cloud.bundle/ad_volume@2x~ipad.ytcx 80 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/loading_youku@2x~ipad.ytcx ... 81 | 2018-12-20 08:01:20 +0000 53826 bytes for ./cloud.bundle/loading_youku@2x~ipad.ytcx 82 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play@2x.ytcx ... 83 | 2962 bytes for ./cloud.bundle/play@2x.ytcx 84 | copying file ./cloud.bundle/ic_close@2x~ipad.ytcx ... 85 | 1714 bytes for ./cloud.bundle/ic_close@2x~ipad.ytcx 86 | copying file ./cloud.bundle/corner_youku_gray@3x.ytcx ... 87 | 2018-12-20 08:01:20 +0000 17074 bytes for ./cloud.bundle/corner_youku_gray@3x.ytcx 88 | copying file ./cloud.bundle/wenjuan_close@2x.ytcx ... 89 | 1234 bytes for ./cloud.bundle/wenjuan_close@2x.ytcx 90 | copying file ./cloud.bundle/bplay~ipad.ytcx ... 91 | 3810 bytes for ./cloud.bundle/bplay~ipad.ytcx 92 | copying file ./cloud.bundle/tip_play~ipad.ytcx ... 93 | 898 bytes for ./cloud.bundle/tip_play~ipad.ytcx 94 | copying file ./cloud.bundle/corner_youku@2x~ipad.ytcx ... 95 | 2018-12-20 08:01:20 +0000 4578 bytes for ./cloud.bundle/corner_youku@2x~ipad.ytcx 96 | copying file ./cloud.bundle/loading_normal@2x.ytcx ... 97 | 2018-12-20 08:01:20 +0000 978 bytes for ./cloud.bundle/loading_normal@2x.ytcx 98 | copying file ./cloud.bundle/toggle_quality~ipad.ytcx ... 99 | 2754 bytes for ./cloud.bundle/toggle_quality~ipad.ytcx 100 | copying file ./cloud.bundle/bplay@3x.ytcx ... 101 | 1058 bytes for ./cloud.bundle/bplay@3x.ytcx 102 | copying file ./cloud.bundle/corner_youku_gray~ipad.ytcx ... 103 | 2018-12-20 08:01:20 +0000 16498 bytes for ./cloud.bundle/corner_youku_gray~ipad.ytcx 104 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_full@2x.ytcx ... 105 | 2018-12-20 08:01:20 +0000 8642 bytes for ./cloud.bundle/player_logo_full@2x.ytcx 106 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_volume_off@2x~ipad.ytcx ... 107 | 2018-12-20 08:01:20 +0000 2418 bytes for ./cloud.bundle/ad_volume_off@2x~ipad.ytcx 108 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play@2x.ytcx ... 109 | 2018-12-20 08:01:20 +0000 3570 bytes for ./cloud.bundle/tip_play@2x.ytcx 110 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/point@2x~ipad.ytcx ... 111 | 2018-12-20 08:01:20 +0000 4594 bytes for ./cloud.bundle/point@2x~ipad.ytcx 112 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_full_tudou@2x.ytcx ... 113 | 2018-12-20 08:01:20 +0000 64194 bytes for ./cloud.bundle/player_logo_full_tudou@2x.ytcx 114 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play_noband@3x.ytcx ... 115 | 2018-12-20 08:01:20 +0000 2562 bytes for ./cloud.bundle/play_noband@3x.ytcx 116 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small@2x~ipad.ytcx ... 117 | 2018-12-20 08:01:20 +0000 9730 bytes for ./cloud.bundle/player_logo_small@2x~ipad.ytcx 118 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_out@2x~ipad.ytcx ... 119 | 2018-12-20 08:01:20 +0000 1474 bytes for ./cloud.bundle/ad_out@2x~ipad.ytcx 120 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play@2x~ipad.ytcx ... 121 | 2018-12-20 08:01:20 +0000 1778 bytes for ./cloud.bundle/tip_play@2x~ipad.ytcx 122 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_tudou_gray@2x.ytcx ... 123 | 2018-12-20 08:01:20 +0000 15650 bytes for ./cloud.bundle/corner_tudou_gray@2x.ytcx 124 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play_noband~ipad.ytcx ... 125 | 2018-12-20 08:01:20 +0000 14994 bytes for ./cloud.bundle/tip_play_noband~ipad.ytcx 126 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/wenjuan_close@3x.ytcx ... 127 | 2018-12-20 08:01:20 +0000 1330 bytes for ./cloud.bundle/wenjuan_close@3x.ytcx 128 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_fullscreen@2x~ipad.ytcx ... 129 | 2018-12-20 08:01:20 +0000 1794 bytes for ./cloud.bundle/ad_fullscreen@2x~ipad.ytcx 130 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_youku_gray@2x.ytcx ... 131 | 2018-12-20 08:01:20 +0000 16162 bytes for ./cloud.bundle/corner_youku_gray@2x.ytcx 132 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ic_close~ipad.ytcx ... 133 | 2018-12-20 08:01:20 +0000 1394 bytes for ./cloud.bundle/ic_close~ipad.ytcx 134 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/loading_normal~ipad.ytcx ... 135 | 2018-12-20 08:01:20 +0000 802 bytes for ./cloud.bundle/loading_normal~ipad.ytcx 136 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play~ipad.ytcx ... 137 | 2018-12-20 08:01:20 +0000 2818 bytes for ./cloud.bundle/play~ipad.ytcx 138 | copying file ./cloud.bundle/player_logo_full~ipad.ytcx ... 139 | 2018-12-20 08:01:20 +0000 6882 bytes for ./cloud.bundle/player_logo_full~ipad.ytcx 140 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small~ipad.ytcx ... 141 | 2018-12-20 08:01:20 +0000 4850 bytes for ./cloud.bundle/player_logo_small~ipad.ytcx 142 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_point~ipad.ytcx ... 143 | 2018-12-20 08:01:20 +0000 338 bytes for ./cloud.bundle/tip_point~ipad.ytcx 144 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/point~ipad.ytcx ... 145 | 2018-12-20 08:01:20 +0000 2578 bytes for ./cloud.bundle/point~ipad.ytcx 146 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play@3x.ytcx ... 147 | 2018-12-20 08:01:20 +0000 4098 bytes for ./cloud.bundle/play@3x.ytcx 148 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_tudou@2x~ipad.ytcx ... 149 | 2018-12-20 08:01:20 +0000 60850 bytes for ./cloud.bundle/corner_tudou@2x~ipad.ytcx 150 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/loading_normal@2x~ipad.ytcx ... 151 | 2018-12-20 08:01:20 +0000 1634 bytes for ./cloud.bundle/loading_normal@2x~ipad.ytcx 152 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/pause@3x.ytcx ... 153 | 2018-12-20 08:01:20 +0000 15426 bytes for ./cloud.bundle/pause@3x.ytcx 154 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_full_tudou~ipad.ytcx ... 155 | 2018-12-20 08:01:20 +0000 5266 bytes for ./cloud.bundle/player_logo_full_tudou~ipad.ytcx 156 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/point@3x.ytcx ... 157 | 2018-12-20 08:01:20 +0000 3586 bytes for ./cloud.bundle/point@3x.ytcx 158 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small@2x.ytcx ... 159 | 2018-12-20 08:01:20 +0000 6978 bytes for ./cloud.bundle/player_logo_small@2x.ytcx 160 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/pause_noband@2x~ipad.ytcx ... 161 | 2018-12-20 08:01:20 +0000 306 bytes for ./cloud.bundle/pause_noband@2x~ipad.ytcx 162 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small_tudou@3x.ytcx ... 163 | 2018-12-20 08:01:20 +0000 4370 bytes for ./cloud.bundle/player_logo_small_tudou@3x.ytcx 164 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_arrow@3x.ytcx ... 165 | 2018-12-20 08:01:20 +0000 1490 bytes for ./cloud.bundle/ad_arrow@3x.ytcx 166 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/yymlogmoudle.plist ... 167 | 2018-12-20 08:01:20 +0000 316 bytes for ./cloud.bundle/yymlogmoudle.plist 168 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/bplay@2x~ipad.ytcx ... 169 | 2018-12-20 08:01:20 +0000 5250 bytes for ./cloud.bundle/bplay@2x~ipad.ytcx 170 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/logo@2x~ipad.ytcx ... 171 | 2018-12-20 08:01:20 +0000 10962 bytes for ./cloud.bundle/logo@2x~ipad.ytcx 172 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_close~ipad.ytcx ... 173 | 2018-12-20 08:01:20 +0000 1522 bytes for ./cloud.bundle/ad_close~ipad.ytcx 174 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/wenjuan_close@2x~ipad.ytcx ... 175 | 2018-12-20 08:01:20 +0000 994 bytes for ./cloud.bundle/wenjuan_close@2x~ipad.ytcx 176 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_volume@2x.ytcx ... 177 | 2018-12-20 08:01:20 +0000 2194 bytes for ./cloud.bundle/ad_volume@2x.ytcx 178 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play_noband@2x~ipad.ytcx ... 179 | 2018-12-20 08:01:20 +0000 15458 bytes for ./cloud.bundle/tip_play_noband@2x~ipad.ytcx 180 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/logo@2x.ytcx ... 181 | 2018-12-20 08:01:20 +0000 5730 bytes for ./cloud.bundle/logo@2x.ytcx 182 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_tudou_gray~ipad.ytcx ... 183 | 2018-12-20 08:01:20 +0000 15778 bytes for ./cloud.bundle/corner_tudou_gray~ipad.ytcx 184 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_out@2x.ytcx ... 185 | 2018-12-20 08:01:20 +0000 1458 bytes for ./cloud.bundle/ad_out@2x.ytcx 186 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_youku@3x.ytcx ... 187 | 2018-12-20 08:01:20 +0000 3042 bytes for ./cloud.bundle/corner_youku@3x.ytcx 188 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ic_close@3x.ytcx ... 189 | 2018-12-20 08:01:20 +0000 1698 bytes for ./cloud.bundle/ic_close@3x.ytcx 190 | copying file ./cloud.bundle/ad_arrow~ipad.ytcx ... 191 | 2018-12-20 08:01:20 +0000 322 bytes for ./cloud.bundle/ad_arrow~ipad.ytcx 192 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/full_screen@2x.ytcx ... 193 | 2018-12-20 08:01:20 +0000 1474 bytes for ./cloud.bundle/full_screen@2x.ytcx 194 | copying file ./cloud.bundle/loading_youku@3x.ytcx ... 195 | 2018-12-20 08:01:20 +0000 1554 bytes for ./cloud.bundle/loading_youku@3x.ytcx 196 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_point@2x.ytcx ... 197 | 2018-12-20 08:01:20 +0000 3058 bytes for ./cloud.bundle/tip_point@2x.ytcx 198 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play_noband@2x~ipad.ytcx ... 199 | 2018-12-20 08:01:20 +0000 1346 bytes for ./cloud.bundle/play_noband@2x~ipad.ytcx 200 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/full_out@2x.ytcx ... 201 | 2018-12-20 08:01:20 +0000 1538 bytes for ./cloud.bundle/full_out@2x.ytcx 202 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_fullscreen@2x.ytcx ... 203 | 2018-12-20 08:01:20 +0000 1378 bytes for ./cloud.bundle/ad_fullscreen@2x.ytcx 204 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_close@3x.ytcx ... 205 | 2018-12-20 08:01:20 +0000 1522 bytes for ./cloud.bundle/ad_close@3x.ytcx 206 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/toggle_quality@2x.ytcx ... 207 | 2018-12-20 08:01:20 +0000 4178 bytes for ./cloud.bundle/toggle_quality@2x.ytcx 208 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_play_noband@2x.ytcx ... 209 | 2018-12-20 08:01:20 +0000 17746 bytes for ./cloud.bundle/tip_play_noband@2x.ytcx 210 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/tip_point@2x~ipad.ytcx ... 211 | 2018-12-20 08:01:20 +0000 610 bytes for ./cloud.bundle/tip_point@2x~ipad.ytcx 212 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_tudou@2x.ytcx ... 213 | 2018-12-20 08:01:20 +0000 55426 bytes for ./cloud.bundle/corner_tudou@2x.ytcx 214 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/play_noband~ipad.ytcx ... 215 | 2018-12-20 08:01:20 +0000 706 bytes for ./cloud.bundle/play_noband~ipad.ytcx 216 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_volume_off@3x.ytcx ... 217 | 2018-12-20 08:01:20 +0000 3010 bytes for ./cloud.bundle/ad_volume_off@3x.ytcx 218 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/pause_noband@3x.ytcx ... 219 | 2018-12-20 08:01:20 +0000 1218 bytes for ./cloud.bundle/pause_noband@3x.ytcx 220 | copying file ./cloud.bundle/ad_out~ipad.ytcx ... 221 | 2018-12-20 08:01:20 +0000 1538 bytes for ./cloud.bundle/ad_out~ipad.ytcx 222 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/pause_noband~ipad.ytcx ... 223 | 2018-12-20 08:01:20 +0000 242 bytes for ./cloud.bundle/pause_noband~ipad.ytcx 224 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/logo@3x.ytcx ... 225 | 2018-12-20 08:01:20 +0000 19330 bytes for ./cloud.bundle/logo@3x.ytcx 226 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_volume@3x.ytcx ... 227 | 2018-12-20 08:01:20 +0000 3010 bytes for ./cloud.bundle/ad_volume@3x.ytcx 228 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small_tudou~ipad.ytcx ... 229 | 2018-12-20 08:01:20 +0000 68402 bytes for ./cloud.bundle/player_logo_small_tudou~ipad.ytcx 230 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/player_logo_small_tudou@2x~ipad.ytcx ... 231 | 2018-12-20 08:01:20 +0000 75858 bytes for ./cloud.bundle/player_logo_small_tudou@2x~ipad.ytcx 232 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_volume~ipad.ytcx ... 233 | 2018-12-20 08:01:20 +0000 1938 bytes for ./cloud.bundle/ad_volume~ipad.ytcx 234 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_tudou_gray@2x~ipad.ytcx ... 235 | 2018-12-20 08:01:20 +0000 16994 bytes for ./cloud.bundle/corner_tudou_gray@2x~ipad.ytcx 236 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ic_close@2x.ytcx ... 237 | 2018-12-20 08:01:20 +0000 1666 bytes for ./cloud.bundle/ic_close@2x.ytcx 238 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/corner_youku@2x.ytcx ... 239 | 2018-12-20 08:01:20 +0000 1906 bytes for ./cloud.bundle/corner_youku@2x.ytcx 240 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/ad_out@3x.ytcx ... 241 | 2018-12-20 08:01:20 +0000 1890 bytes for ./cloud.bundle/ad_out@3x.ytcx 242 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/wenjuan_close~ipad.ytcx ... 243 | 2018-12-20 08:01:20 +0000 1330 bytes for ./cloud.bundle/wenjuan_close~ipad.ytcx 244 | 2018-12-20 08:01:20 +0000 copying file ./cloud.bundle/loading_youku~ipad.ytcx ... 245 | 2018-12-20 08:01:20 +0000 51394 bytes for ./cloud.bundle/loading_youku~ipad.ytcx 246 | copying file ./cloud.bundle/pause@2x~ipad.ytcx ... 247 | 2018-12-20 08:01:21 +0000 1154 bytes for ./cloud.bundle/pause@2x~ipad.ytcx 248 | copying file ./cloud.bundle/point@2x.ytcx ... 249 | 2018-12-20 08:01:21 +0000 4802 bytes for ./cloud.bundle/point@2x.ytcx 250 | copying file ./cloud.bundle/player_logo_small@3x.ytcx ... 251 | 2018-12-20 08:01:21 +0000 4178 bytes for ./cloud.bundle/player_logo_small@3x.ytcx 252 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/logo~ipad.ytcx ... 253 | 2018-12-20 08:01:21 +0000 7634 bytes for ./cloud.bundle/logo~ipad.ytcx 254 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/pause@2x.ytcx ... 255 | 2018-12-20 08:01:21 +0000 15250 bytes for ./cloud.bundle/pause@2x.ytcx 256 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/corner_youku_gray@2x~ipad.ytcx ... 257 | 2018-12-20 08:01:21 +0000 18498 bytes for ./cloud.bundle/corner_youku_gray@2x~ipad.ytcx 258 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/player_logo_small_tudou@2x.ytcx ... 259 | 2018-12-20 08:01:21 +0000 70242 bytes for ./cloud.bundle/player_logo_small_tudou@2x.ytcx 260 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_arrow@2x.ytcx ... 261 | 2018-12-20 08:01:21 +0000 1202 bytes for ./cloud.bundle/ad_arrow@2x.ytcx 262 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_volume_off@2x.ytcx ... 263 | 2018-12-20 08:01:21 +0000 1922 bytes for ./cloud.bundle/ad_volume_off@2x.ytcx 264 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/corner_tudou@3x.ytcx ... 265 | 2018-12-20 08:01:21 +0000 2066 bytes for ./cloud.bundle/corner_tudou@3x.ytcx 266 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_close@2x~ipad.ytcx ... 267 | 2018-12-20 08:01:21 +0000 2290 bytes for ./cloud.bundle/ad_close@2x~ipad.ytcx 268 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/pause_noband@2x.ytcx ... 269 | 2018-12-20 08:01:21 +0000 1138 bytes for ./cloud.bundle/pause_noband@2x.ytcx 270 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/corner_youku~ipad.ytcx ... 271 | 2018-12-20 08:01:21 +0000 2370 bytes for ./cloud.bundle/corner_youku~ipad.ytcx 272 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/loading_youku@2x.ytcx ... 273 | 2018-12-20 08:01:21 +0000 1074 bytes for ./cloud.bundle/loading_youku@2x.ytcx 274 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/tip_point@3x.ytcx ... 275 | 2018-12-20 08:01:21 +0000 530 bytes for ./cloud.bundle/tip_point@3x.ytcx 276 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/player_logo_full@2x~ipad.ytcx ... 277 | 2018-12-20 08:01:21 +0000 13602 bytes for ./cloud.bundle/player_logo_full@2x~ipad.ytcx 278 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/full_screen@3x.ytcx ... 279 | 2018-12-20 08:01:21 +0000 1890 bytes for ./cloud.bundle/full_screen@3x.ytcx 280 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/play@2x~ipad.ytcx ... 281 | 3522 bytes for ./cloud.bundle/play@2x~ipad.ytcx 282 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_volume_off~ipad.ytcx ... 283 | 2018-12-20 08:01:21 +0000 1858 bytes for ./cloud.bundle/ad_volume_off~ipad.ytcx 284 | copying file ./cloud.bundle/toggle_quality@3x.ytcx ... 285 | 2018-12-20 08:01:21 +0000 6482 bytes for ./cloud.bundle/toggle_quality@3x.ytcx 286 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/tip_play_noband@3x.ytcx ... 287 | 2018-12-20 08:01:21 +0000 15298 bytes for ./cloud.bundle/tip_play_noband@3x.ytcx 288 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/full_out@3x.ytcx ... 289 | 2018-12-20 08:01:21 +0000 1986 bytes for ./cloud.bundle/full_out@3x.ytcx 290 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/pause~ipad.ytcx ... 291 | 2018-12-20 08:01:21 +0000 1074 bytes for ./cloud.bundle/pause~ipad.ytcx 292 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_fullscreen@3x.ytcx ... 293 | 2018-12-20 08:01:21 +0000 1810 bytes for ./cloud.bundle/ad_fullscreen@3x.ytcx 294 | 2018-12-20 08:01:21 +0000 copying file ./cloud.bundle/ad_close@2x.ytcx ... 295 | 2018-12-20 08:01:21 +0000 1490 bytes for ./cloud.bundle/ad_close@2x.ytcx 296 | 2018-12-20 08:01:21 +0000 copying file ./LaunchImage_Chen_LYGL-700-Portrait~ipad.png ... 297 | 2018-12-20 08:01:21 +0000 25145 bytes for ./LaunchImage_Chen_LYGL-700-Portrait~ipad.png 298 | 2018-12-20 08:01:21 +0000 copying file ./MJRefresh.bundle/zh-Hans.lproj/Localizable.strings ... 299 | 2018-12-20 08:01:21 +0000 1194 bytes for ./MJRefresh.bundle/zh-Hans.lproj/Localizable.strings 300 | 2018-12-20 08:01:21 +0000 copying file ./MJRefresh.bundle/en.lproj/Localizable.strings ... 301 | 2018-12-20 08:01:21 +0000 691 bytes for ./MJRefresh.bundle/en.lproj/Localizable.strings 302 | 2018-12-20 08:01:21 +0000 copying file ./MJRefresh.bundle/arrow@2x.png ... 303 | 2018-12-20 08:01:21 +0000 1033 bytes for ./MJRefresh.bundle/arrow@2x.png 304 | 2018-12-20 08:01:21 +0000 copying file ./MJRefresh.bundle/zh-Hant.lproj/Localizable.strings ... 305 | 2018-12-20 08:01:21 +0000 773 bytes for ./MJRefresh.bundle/zh-Hant.lproj/Localizable.strings 306 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialWaterMark/umsocial_defaultwatermark.png ... 307 | 2018-12-20 08:01:21 +0000 3003 bytes for ./UMSocialSDKResources.bundle/UMSocialWaterMark/umsocial_defaultwatermark.png 308 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/zh-Hans.lproj/UMSocialLocalizable.strings ... 309 | 2018-12-20 08:01:21 +0000 6740 bytes for ./UMSocialSDKResources.bundle/zh-Hans.lproj/UMSocialLocalizable.strings 310 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/en.lproj/UMSocialLocalizable.strings ... 311 | 2018-12-20 08:01:21 +0000 6554 bytes for ./UMSocialSDKResources.bundle/en.lproj/UMSocialLocalizable.strings 312 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/Buttons/UMS_nav_button_close@2x.png ... 313 | 2018-12-20 08:01:21 +0000 500 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_nav_button_close@2x.png 314 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/Buttons/UMS_url_image@2x.png ... 315 | 2018-12-20 08:01:21 +0000 1562 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_url_image@2x.png 316 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/Buttons/UMS_url_music@2x.png ... 317 | 2018-12-20 08:01:21 +0000 1771 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_url_music@2x.png 318 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/Buttons/UMS_add_friend_off@2x.png ... 319 | 2018-12-20 08:01:21 +0000 134 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_add_friend_off@2x.png 320 | copying file ./UMSocialSDKResources.bundle/Buttons/UMS_delete_image_button_normal@2x.png ... 321 | 891 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_delete_image_button_normal@2x.png 322 | copying file ./UMSocialSDKResources.bundle/Buttons/UMS_nav_button_send@2x.png ... 323 | 2018-12-20 08:01:21 +0000 1624 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_nav_button_send@2x.png 324 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/Buttons/UMS_url_video@2x.png ... 325 | 2018-12-20 08:01:21 +0000 2062 bytes for ./UMSocialSDKResources.bundle/Buttons/UMS_url_video@2x.png 326 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_renren.png ... 327 | 2018-12-20 08:01:21 +0000 1529 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_renren.png 328 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_default.png ... 329 | 2018-12-20 08:01:21 +0000 4203 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_default.png 330 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_pinterest.png ... 331 | 2018-12-20 08:01:21 +0000 1987 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_pinterest.png 332 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_alipay.png ... 333 | 2018-12-20 08:01:21 +0000 1370 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_alipay.png 334 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_session.png ... 335 | 2018-12-20 08:01:21 +0000 1833 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_session.png 336 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_vkontakte.png ... 337 | 2018-12-20 08:01:21 +0000 1867 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_vkontakte.png 338 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tim.png ... 339 | 2018-12-20 08:01:21 +0000 2597 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tim.png 340 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_lw_session.png ... 341 | 2018-12-20 08:01:21 +0000 2391 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_lw_session.png 342 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_linkedin.png ... 343 | 2018-12-20 08:01:21 +0000 1637 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_linkedin.png 344 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_favorite.png ... 345 | 2018-12-20 08:01:21 +0000 4145 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_favorite.png 346 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_youdaonote.png ... 347 | 2018-12-20 08:01:21 +0000 1158 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_youdaonote.png 348 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_flickr.png ... 349 | 2018-12-20 08:01:21 +0000 979 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_flickr.png 350 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_line.png ... 351 | 2018-12-20 08:01:21 +0000 1720 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_line.png 352 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_email.png ... 353 | 2018-12-20 08:01:21 +0000 1211 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_email.png 354 | copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_sms.png ... 355 | 2018-12-20 08:01:21 +0000 1127 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_sms.png 356 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_evernote.png ... 357 | 2018-12-20 08:01:21 +0000 1267 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_evernote.png 358 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_twitter.png ... 359 | 2018-12-20 08:01:21 +0000 1442 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_twitter.png 360 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_whatsapp.png ... 361 | 2018-12-20 08:01:21 +0000 1832 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_whatsapp.png 362 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_googleplus.png ... 363 | 2018-12-20 08:01:21 +0000 2320 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_googleplus.png 364 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_douban.png ... 365 | 2018-12-20 08:01:21 +0000 813 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_douban.png 366 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_lw_timeline.png ... 367 | 2018-12-20 08:01:21 +0000 1139 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_lw_timeline.png 368 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_facebook.png ... 369 | 2018-12-20 08:01:21 +0000 1468 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_facebook.png 370 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_dingding.png ... 371 | 2018-12-20 08:01:21 +0000 1390 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_dingding.png 372 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat.png ... 373 | 2018-12-20 08:01:21 +0000 1628 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat.png 374 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_timeline.png ... 375 | 2018-12-20 08:01:21 +0000 2199 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_yixin_timeline.png 376 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_dropbox.png ... 377 | 2018-12-20 08:01:21 +0000 1692 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_dropbox.png 378 | copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_pocket.png ... 379 | 2018-12-20 08:01:21 +0000 1405 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_pocket.png 380 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat_timeline.png ... 381 | 2018-12-20 08:01:21 +0000 1506 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat_timeline.png 382 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tencentWB.png ... 383 | 1943 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tencentWB.png 384 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat_favorite.png ... 385 | 2018-12-20 08:01:21 +0000 1179 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_wechat_favorite.png 386 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_sina.png ... 387 | 2018-12-20 08:01:21 +0000 2581 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_sina.png 388 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tumblr.png ... 389 | 2018-12-20 08:01:21 +0000 1564 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_tumblr.png 390 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_kakaoTalk.png ... 391 | 2018-12-20 08:01:21 +0000 1893 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_kakaoTalk.png 392 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_facebookmessenger.png ... 393 | 2018-12-20 08:01:21 +0000 1749 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_facebookmessenger.png 394 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_qzone.png ... 395 | 2018-12-20 08:01:21 +0000 2083 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_qzone.png 396 | 2018-12-20 08:01:21 +0000 copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_qq.png ... 397 | 2018-12-20 08:01:21 +0000 3505 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_qq.png 398 | copying file ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_instagram.png ... 399 | 2018-12-20 08:01:21 +0000 1952 bytes for ./UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/umsocial_instagram.png 400 | 2018-12-20 08:01:21 +0000 copying file ./banquaniphone.png ... 401 | 2018-12-20 08:01:21 +0000 142945 bytes for ./banquaniphone.png 402 | copying file ./(new)积分弹窗使用方法.pdf ... 403 | 2018-12-20 08:01:21 +0000 81596 bytes for ./(new)积分弹窗使用方法.pdf 404 | 2018-12-20 08:01:21 +0000 copying file ./如何添加【本地推送】功能.md ... 405 | 2018-12-20 08:01:21 +0000 6919 bytes for ./如何添加【本地推送】功能.md 406 | 2018-12-20 08:01:21 +0000 copying file ./download@2x.png ... 407 | 2018-12-20 08:01:21 +0000 3405 bytes for ./download@2x.png 408 | copying file ./LaunchImage_Chen_LYGL-1100-Portrait-2436h@3x.png ... 409 | 2018-12-20 08:01:21 +0000 60157 bytes for ./LaunchImage_Chen_LYGL-1100-Portrait-2436h@3x.png 410 | 2018-12-20 08:01:21 +0000 copying file ./undownload@2x.png ... 411 | 2018-12-20 08:01:21 +0000 3459 bytes for ./undownload@2x.png 412 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL40x40@2x~ipad.png ... 413 | 2018-12-20 08:01:21 +0000 4753 bytes for ./AppIcon_Chen_LYGL40x40@2x~ipad.png 414 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL76x76@2x~ipad.png ... 415 | 2018-12-20 08:01:21 +0000 9670 bytes for ./AppIcon_Chen_LYGL76x76@2x~ipad.png 416 | 2018-12-20 08:01:21 +0000 copying file ./zh-Hant.lproj/InfoPlist.strings ... 417 | 2018-12-20 08:01:21 +0000 42 bytes for ./zh-Hant.lproj/InfoPlist.strings 418 | 2018-12-20 08:01:21 +0000 copying file ./readme ... 419 | 2018-12-20 08:01:21 +0000 94 bytes for ./readme 420 | 2018-12-20 08:01:21 +0000 copying file ./network_popback.png ... 421 | 2018-12-20 08:01:21 +0000 501 bytes for ./network_popback.png 422 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL40x40~ipad.png ... 423 | 2018-12-20 08:01:21 +0000 2136 bytes for ./AppIcon_Chen_LYGL40x40~ipad.png 424 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL20x20~ipad.png ... 425 | 2018-12-20 08:01:21 +0000 913 bytes for ./AppIcon_Chen_LYGL20x20~ipad.png 426 | copying file ./AppIcon_Chen_LYGL40x40@3x.png ... 427 | 2018-12-20 08:01:21 +0000 7431 bytes for ./AppIcon_Chen_LYGL40x40@3x.png 428 | 2018-12-20 08:01:21 +0000 copying file ./kAlert_close@3x.png ... 429 | 2018-12-20 08:01:21 +0000 1378 bytes for ./kAlert_close@3x.png 430 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL29x29@2x.png ... 431 | 2018-12-20 08:01:21 +0000 3237 bytes for ./AppIcon_Chen_LYGL29x29@2x.png 432 | 2018-12-20 08:01:21 +0000 copying file ./LaunchImage_Chen_LYGL-800-Portrait-736h@3x.png ... 433 | 2018-12-20 08:01:21 +0000 60066 bytes for ./LaunchImage_Chen_LYGL-800-Portrait-736h@3x.png 434 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL60x60@2x.png ... 435 | 2018-12-20 08:01:21 +0000 7431 bytes for ./AppIcon_Chen_LYGL60x60@2x.png 436 | 2018-12-20 08:01:21 +0000 copying file ./banquanipad.png ... 437 | 2018-12-20 08:01:21 +0000 110799 bytes for ./banquanipad.png 438 | 2018-12-20 08:01:21 +0000 copying file ./Assets.car ... 439 | 2018-12-20 08:01:21 +0000 1766632 bytes for ./Assets.car 440 | copying file ./YYZDDefaultConfigure.plist ... 441 | 2018-12-20 08:01:21 +0000 5712 bytes for ./YYZDDefaultConfigure.plist 442 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL83.5x83.5@2x~ipad.png ... 443 | 2018-12-20 08:01:21 +0000 10790 bytes for ./AppIcon_Chen_LYGL83.5x83.5@2x~ipad.png 444 | copying file ./AppIcon_Chen_LYGL76x76~ipad.png ... 445 | 2018-12-20 08:01:21 +0000 4466 bytes for ./AppIcon_Chen_LYGL76x76~ipad.png 446 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL60x60@3x.png ... 447 | 2018-12-20 08:01:21 +0000 11493 bytes for ./AppIcon_Chen_LYGL60x60@3x.png 448 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL29x29@3x.png ... 449 | 2018-12-20 08:01:21 +0000 5164 bytes for ./AppIcon_Chen_LYGL29x29@3x.png 450 | copying file ./kAlert_close@2x.png ... 451 | 2018-12-20 08:01:21 +0000 1231 bytes for ./kAlert_close@2x.png 452 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL40x40@2x.png ... 453 | 2018-12-20 08:01:21 +0000 4753 bytes for ./AppIcon_Chen_LYGL40x40@2x.png 454 | copying file ./LaunchImage_Chen_LYGL-1200-Portrait-1792h@2x.png ... 455 | 2018-12-20 08:01:21 +0000 56147 bytes for ./LaunchImage_Chen_LYGL-1200-Portrait-1792h@2x.png 456 | 2018-12-20 08:01:21 +0000 copying file ./back~ipad.png ... 457 | 2018-12-20 08:01:21 +0000 229 bytes for ./back~ipad.png 458 | 2018-12-20 08:01:21 +0000 copying file ./LaunchImage_Chen_LYGL-700@2x.png ... 459 | 2018-12-20 08:01:21 +0000 24055 bytes for ./LaunchImage_Chen_LYGL-700@2x.png 460 | 2018-12-20 08:01:21 +0000 copying file ./yw_1222_0335_mwua.jpg ... 461 | 2018-12-20 08:01:21 +0000 37920 bytes for ./yw_1222_0335_mwua.jpg 462 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL20x20@2x.png ... 463 | 2018-12-20 08:01:21 +0000 2136 bytes for ./AppIcon_Chen_LYGL20x20@2x.png 464 | copying file ./network_tips.png ... 465 | 2018-12-20 08:01:21 +0000 442761 bytes for ./network_tips.png 466 | 2018-12-20 08:01:21 +0000 copying file ./LaunchImage_Chen_LYGL-800-667h@2x.png ... 467 | 2018-12-20 08:01:21 +0000 26516 bytes for ./LaunchImage_Chen_LYGL-800-667h@2x.png 468 | 2018-12-20 08:01:21 +0000 copying file ./旅游攻略chen.plist ... 469 | 2018-12-20 08:01:21 +0000 3557 bytes for ./旅游攻略chen.plist 470 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_play@2x.png ... 471 | 2018-12-20 08:01:21 +0000 2320 bytes for ./SSVideoPlayer.bundle/player_play@2x.png 472 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_pause@3x.png ... 473 | 2018-12-20 08:01:21 +0000 3039 bytes for ./SSVideoPlayer.bundle/player_pause@3x.png 474 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_delete.png ... 475 | 2018-12-20 08:01:21 +0000 904 bytes for ./SSVideoPlayer.bundle/player_delete.png 476 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_play.png ... 477 | 2018-12-20 08:01:21 +0000 1688 bytes for ./SSVideoPlayer.bundle/player_play.png 478 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_next.png ... 479 | 2018-12-20 08:01:21 +0000 1013 bytes for ./SSVideoPlayer.bundle/player_next.png 480 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_pause@2x.png ... 481 | 2018-12-20 08:01:21 +0000 1884 bytes for ./SSVideoPlayer.bundle/player_pause@2x.png 482 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_play@3x.png ... 483 | 2018-12-20 08:01:21 +0000 3527 bytes for ./SSVideoPlayer.bundle/player_play@3x.png 484 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fit@3x.png ... 485 | 2018-12-20 08:01:21 +0000 1403 bytes for ./SSVideoPlayer.bundle/player_fit@3x.png 486 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_delete@3x.png ... 487 | 2018-12-20 08:01:21 +0000 1240 bytes for ./SSVideoPlayer.bundle/player_delete@3x.png 488 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_previous@2x.png ... 489 | 2018-12-20 08:01:21 +0000 1071 bytes for ./SSVideoPlayer.bundle/player_previous@2x.png 490 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fill@2x.png ... 491 | 2018-12-20 08:01:21 +0000 1277 bytes for ./SSVideoPlayer.bundle/player_fill@2x.png 492 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_menu.png ... 493 | 2018-12-20 08:01:21 +0000 978 bytes for ./SSVideoPlayer.bundle/player_menu.png 494 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fill@3x.png ... 495 | 2018-12-20 08:01:21 +0000 1462 bytes for ./SSVideoPlayer.bundle/player_fill@3x.png 496 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_previous@3x.png ... 497 | 2018-12-20 08:01:21 +0000 1424 bytes for ./SSVideoPlayer.bundle/player_previous@3x.png 498 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fill.png ... 499 | 2018-12-20 08:01:21 +0000 1376 bytes for ./SSVideoPlayer.bundle/player_fill.png 500 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fit@2x.png ... 501 | 2018-12-20 08:01:21 +0000 1197 bytes for ./SSVideoPlayer.bundle/player_fit@2x.png 502 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_delete@2x.png ... 503 | 2018-12-20 08:01:21 +0000 1055 bytes for ./SSVideoPlayer.bundle/player_delete@2x.png 504 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_fit.png ... 505 | 2018-12-20 08:01:21 +0000 1263 bytes for ./SSVideoPlayer.bundle/player_fit.png 506 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_quit@3x.png ... 507 | 2018-12-20 08:01:21 +0000 1735 bytes for ./SSVideoPlayer.bundle/player_quit@3x.png 508 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_volume.png ... 509 | 2018-12-20 08:01:21 +0000 921 bytes for ./SSVideoPlayer.bundle/player_volume.png 510 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_volume@2x.png ... 511 | 2018-12-20 08:01:21 +0000 1029 bytes for ./SSVideoPlayer.bundle/player_volume@2x.png 512 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_volume@3x.png ... 513 | 2018-12-20 08:01:21 +0000 1412 bytes for ./SSVideoPlayer.bundle/player_volume@3x.png 514 | copying file ./SSVideoPlayer.bundle/player_quit@2x.png ... 515 | 1285 bytes for ./SSVideoPlayer.bundle/player_quit@2x.png 516 | copying file ./SSVideoPlayer.bundle/player_slider.png ... 517 | 1180 bytes for ./SSVideoPlayer.bundle/player_slider.png 518 | copying file ./SSVideoPlayer.bundle/player_menu@3x.png ... 519 | 2018-12-20 08:01:21 +0000 1202 bytes for ./SSVideoPlayer.bundle/player_menu@3x.png 520 | copying file ./SSVideoPlayer.bundle/player_next@3x.png ... 521 | 2018-12-20 08:01:21 +0000 1443 bytes for ./SSVideoPlayer.bundle/player_next@3x.png 522 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_pause.png ... 523 | 2018-12-20 08:01:21 +0000 1458 bytes for ./SSVideoPlayer.bundle/player_pause.png 524 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_slider@2x.png ... 525 | 2018-12-20 08:01:21 +0000 1709 bytes for ./SSVideoPlayer.bundle/player_slider@2x.png 526 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_previous.png ... 527 | 2018-12-20 08:01:21 +0000 1033 bytes for ./SSVideoPlayer.bundle/player_previous.png 528 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_quit.png ... 529 | 2018-12-20 08:01:21 +0000 980 bytes for ./SSVideoPlayer.bundle/player_quit.png 530 | copying file ./SSVideoPlayer.bundle/player_slider@3x.png ... 531 | 2018-12-20 08:01:21 +0000 2413 bytes for ./SSVideoPlayer.bundle/player_slider@3x.png 532 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_next@2x.png ... 533 | 2018-12-20 08:01:21 +0000 1046 bytes for ./SSVideoPlayer.bundle/player_next@2x.png 534 | 2018-12-20 08:01:21 +0000 copying file ./SSVideoPlayer.bundle/player_menu@2x.png ... 535 | 2018-12-20 08:01:21 +0000 975 bytes for ./SSVideoPlayer.bundle/player_menu@2x.png 536 | 2018-12-20 08:01:21 +0000 copying file ./embedded.mobileprovision ... 537 | 2018-12-20 08:01:21 +0000 9175 bytes for ./embedded.mobileprovision 538 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/info.png ... 539 | 2018-12-20 08:01:21 +0000 365 bytes for ./SVProgressHUD.bundle/info.png 540 | copying file ./SVProgressHUD.bundle/error@3x.png ... 541 | 2018-12-20 08:01:21 +0000 398 bytes for ./SVProgressHUD.bundle/error@3x.png 542 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/angle-mask@3x.png ... 543 | 2018-12-20 08:01:21 +0000 8319 bytes for ./SVProgressHUD.bundle/angle-mask@3x.png 544 | copying file ./SVProgressHUD.bundle/angle-mask@2x.png ... 545 | 2018-12-20 08:01:21 +0000 4893 bytes for ./SVProgressHUD.bundle/angle-mask@2x.png 546 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/error@2x.png ... 547 | 2018-12-20 08:01:21 +0000 306 bytes for ./SVProgressHUD.bundle/error@2x.png 548 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/info@3x.png ... 549 | 2018-12-20 08:01:21 +0000 1200 bytes for ./SVProgressHUD.bundle/info@3x.png 550 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/success@2x.png ... 551 | 2018-12-20 08:01:21 +0000 462 bytes for ./SVProgressHUD.bundle/success@2x.png 552 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/success@3x.png ... 553 | 2018-12-20 08:01:21 +0000 714 bytes for ./SVProgressHUD.bundle/success@3x.png 554 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/info@2x.png ... 555 | 2018-12-20 08:01:21 +0000 816 bytes for ./SVProgressHUD.bundle/info@2x.png 556 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/error.png ... 557 | 2018-12-20 08:01:21 +0000 184 bytes for ./SVProgressHUD.bundle/error.png 558 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/success.png ... 559 | 2018-12-20 08:01:21 +0000 262 bytes for ./SVProgressHUD.bundle/success.png 560 | 2018-12-20 08:01:21 +0000 copying file ./SVProgressHUD.bundle/angle-mask.png ... 561 | 2018-12-20 08:01:21 +0000 1845 bytes for ./SVProgressHUD.bundle/angle-mask.png 562 | 2018-12-20 08:01:21 +0000 copying file ./Info.plist ... 563 | 2018-12-20 08:01:21 +0000 5183 bytes for ./Info.plist 564 | 2018-12-20 08:01:21 +0000 copying file ./AppIcon_Chen_LYGL20x20@3x.png ... 565 | 2018-12-20 08:01:21 +0000 3390 bytes for ./AppIcon_Chen_LYGL20x20@3x.png 566 | 2018-12-20 08:01:21 +0000 copying file ./LaunchImage_Chen_LYGL-700-Portrait@2x~ipad.png ... 567 | 2018-12-20 08:01:21 +0000 62820 bytes for ./LaunchImage_Chen_LYGL-700-Portrait@2x~ipad.png 568 | 2018-12-20 08:01:21 +0000 copying file ./PkgInfo ... 569 | 2018-12-20 08:01:21 +0000 8 bytes for ./PkgInfo 570 | 2018-12-20 08:01:21 +0000 /usr/bin/ditto exited with 0 571 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionEmbedProfileStep 572 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionItemRemovalStep 573 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionAppThinningPlistStep 574 | 2018-12-20 08:01:21 +0000 Skipping step: IDEDistributionAppThinningPlistStep because it said so 575 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionCompileBitcodeStep 576 | 2018-12-20 08:01:21 +0000 Skipping step: IDEDistributionCompileBitcodeStep because it said so 577 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionCodeSlimmingStep 578 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionCopyBCSymbolMapsStep 579 | 2018-12-20 08:01:21 +0000 Processing step: IDEDistributionSymbolsStep 580 | 2018-12-20 08:01:21 +0000 Processing symbols for 旅游攻略chen.app 581 | 2018-12-20 08:01:21 +0000 Running /usr/bin/rsync '-8aPhhE' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app' '--link-dest' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM' 582 | 2018-12-20 08:01:21 +0000 building file list ... 583 | 2018-12-20 08:01:21 +0000 0 files... 2018-12-20 08:01:21 +0000 100 files... 2018-12-20 08:01:21 +0000 200 files... 2018-12-20 08:01:21 +0000 297 files to consider 584 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/ 585 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/MJRefresh.bundle/ 586 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/MJRefresh.bundle/en.lproj/ 587 | 旅游攻略chen.app/MJRefresh.bundle/zh-Hans.lproj/ 588 | 旅游攻略chen.app/MJRefresh.bundle/zh-Hant.lproj/ 589 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/SSVideoPlayer.bundle/ 590 | 旅游攻略chen.app/SVProgressHUD.bundle/ 591 | 旅游攻略chen.app/UMSocialSDKResources.bundle/ 592 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/UMSocialSDKResources.bundle/Buttons/ 593 | 旅游攻略chen.app/UMSocialSDKResources.bundle/UMSocialPlatformTheme/ 594 | 旅游攻略chen.app/UMSocialSDKResources.bundle/UMSocialPlatformTheme/default/ 595 | 旅游攻略chen.app/UMSocialSDKResources.bundle/UMSocialWaterMark/ 596 | 旅游攻略chen.app/UMSocialSDKResources.bundle/en.lproj/ 597 | 旅游攻略chen.app/UMSocialSDKResources.bundle/zh-Hans.lproj/ 598 | 旅游攻略chen.app/WeiboSDK.bundle/ 599 | 旅游攻略chen.app/WeiboSDK.bundle/images/ 600 | 旅游攻略chen.app/WeiboSDK.bundle/others/ 601 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app/_CodeSignature/ 602 | 旅游攻略chen.app/cloud.bundle/ 603 | 旅游攻略chen.app/en.lproj/ 604 | 旅游攻略chen.app/zh-Hans.lproj/ 605 | 旅游攻略chen.app/zh-Hant.lproj/ 606 | 2018-12-20 08:01:21 +0000 607 | 2018-12-20 08:01:21 +0000 sent 8.37K bytes received 152 bytes 17.03K bytes/sec 608 | total size is 52.16M speedup is 6271.71 609 | 2018-12-20 08:01:21 +0000 /usr/bin/rsync exited with 0 610 | 2018-12-20 08:01:21 +0000 Running /usr/bin/rsync '-8aPhhE' '/Users/anwenhu/Library/Developer/Xcode/Archives/2018-12-20/旅游攻略chen 2018-12-20 下午4.00.xcarchive/dSYMs/' '--link-dest' '/Users/anwenhu/Library/Developer/Xcode/Archives/2018-12-20/旅游攻略chen 2018-12-20 下午4.00.xcarchive/dSYMs/' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM' 611 | 2018-12-20 08:01:21 +0000 building file list ... 612 | 2018-12-20 08:01:21 +0000 0 files... 2018-12-20 08:01:21 +0000 7 files to consider 613 | 2018-12-20 08:01:21 +0000 ./ 614 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app.dSYM/ 615 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app.dSYM/Contents/ 616 | 2018-12-20 08:01:21 +0000 旅游攻略chen.app.dSYM/Contents/Resources/ 617 | 旅游攻略chen.app.dSYM/Contents/Resources/DWARF/ 618 | 2018-12-20 08:01:21 +0000 619 | 2018-12-20 08:01:21 +0000 sent 270 bytes received 50 bytes 640.00 bytes/sec 620 | total size is 43.96M speedup is 144038.47 621 | 2018-12-20 08:01:21 +0000 /usr/bin/rsync exited with 0 622 | 2018-12-20 08:01:21 +0000 Running /Applications/Xcode.app/Contents/Developer/usr/bin/symbols '-noTextInSOD' '-noDaemon' '-arch' 'all' '-symbolsPackageDir' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Symbols' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/旅游攻略chen.app.dSYM/Contents/Resources/Dwarf/旅游攻略chen' 623 | 2018-12-20 08:01:26 +0000 /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/旅游攻略chen.app.dSYM/Contents/Resources/Dwarf/旅游攻略chen [armv7, 1.610716 seconds]: 624 | /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/旅游攻略chen.app.dSYM/Contents/Resources/Dwarf/旅游攻略chen [arm64, 1.610716 seconds]: 625 | 2018-12-20 08:01:26 +0000 /Applications/Xcode.app/Contents/Developer/usr/bin/symbols exited with 0 626 | 2018-12-20 08:01:26 +0000 Processing step: IDEDistributionCopyAppleProvidedContentStep 627 | 2018-12-20 08:01:26 +0000 Processing step: IDEDistributionAppThinningStep 628 | 2018-12-20 08:01:26 +0000 Skipping step: IDEDistributionAppThinningStep because it said so 629 | 2018-12-20 08:01:26 +0000 Processing step: IDEDistributionODRStep 630 | 2018-12-20 08:01:26 +0000 Processing step: IDEDistributionStripXattrsStep 631 | 2018-12-20 08:01:26 +0000 Running /usr/bin/xattr '-crs' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app' 632 | 2018-12-20 08:01:26 +0000 /usr/bin/xattr exited with 0 633 | 2018-12-20 08:01:26 +0000 Processing step: IDEDistributionCodesignStep 634 | 2018-12-20 08:01:26 +0000 Entitlements for '>: { 635 | "application-identifier" = "Q6F5GPUR85.com.zhiyan.chen.splvyou"; 636 | "aps-environment" = production; 637 | "beta-reports-active" = 1; 638 | "com.apple.developer.team-identifier" = Q6F5GPUR85; 639 | "get-task-allow" = 0; 640 | } 641 | 2018-12-20 08:01:26 +0000 Writing entitlements for '> to: /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/entitlementsqmbtkv 642 | 2018-12-20 08:01:26 +0000 Running /usr/bin/codesign '-vvv' '--force' '--sign' '81BFA4754CC4289C583291E10258EB200B1A99D4' '--entitlements' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/entitlementsqmbtkv' '--preserve-metadata=identifier,flags,runtime' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app' 643 | 2018-12-20 08:01:26 +0000 /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app: replacing existing signature 644 | 2018-12-20 08:01:30 +0000 /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root/Payload/旅游攻略chen.app: signed app bundle with Mach-O universal (armv7 arm64) [com.zhiyan.chen.splvyou] 645 | 2018-12-20 08:01:30 +0000 /usr/bin/codesign exited with 0 646 | 2018-12-20 08:01:30 +0000 Processing step: IDEDistributionZipODRItemStep 647 | 2018-12-20 08:01:30 +0000 Skipping step: IDEDistributionZipODRItemStep because it said so 648 | 2018-12-20 08:01:30 +0000 Processing step: IDEDistributionCreateIPAStep 649 | 2018-12-20 08:01:30 +0000 Running /usr/bin/rsync '-8aPhhE' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Symbols' '--link-dest' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root' 650 | 2018-12-20 08:01:30 +0000 building file list ... 651 | 2018-12-20 08:01:30 +0000 0 files... 2018-12-20 08:01:30 +0000 3 files to consider 652 | 2018-12-20 08:01:30 +0000 Symbols/ 653 | 2018-12-20 08:01:30 +0000 654 | sent 200 bytes received 26 bytes 452.00 bytes/sec 655 | total size is 768 speedup is 3.40 656 | 2018-12-20 08:01:30 +0000 /usr/bin/rsync exited with 0 657 | 2018-12-20 08:01:30 +0000 Running /usr/bin/ditto '-V' '-c' '-k' '--norsrc' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root' '/var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Packages/旅游攻略chen.ipa' 658 | 2018-12-20 08:01:30 +0000 >>> Copying /var/folders/lb/tby1gwds2fnb89dzkf4cq3xh0000gn/T/XcodeDistPipeline.FbM/Root 659 | 2018-12-20 08:01:30 +0000 copying file ./Payload/旅游攻略chen.app/_CodeSignature/CodeResources ... 660 | 2018-12-20 08:01:30 +0000 95319 bytes for ./Payload/旅游攻略chen.app/_CodeSignature/CodeResources 661 | 2018-12-20 08:01:30 +0000 copying file ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL20x20@2x~ipad.png ... 662 | 2018-12-20 08:01:30 +0000 2136 bytes for ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL20x20@2x~ipad.png 663 | 2018-12-20 08:01:30 +0000 copying file ./Payload/旅游攻略chen.app/zh-Hans.lproj/InfoPlist.strings ... 664 | 2018-12-20 08:01:30 +0000 42 bytes for ./Payload/旅游攻略chen.app/zh-Hans.lproj/InfoPlist.strings 665 | 2018-12-20 08:01:30 +0000 copying file ./Payload/旅游攻略chen.app/旅游攻略chen ... 666 | 2018-12-20 08:01:33 +0000 50089792 bytes for ./Payload/旅游攻略chen.app/旅游攻略chen 667 | 2018-12-20 08:01:33 +0000 copying file ./Payload/旅游攻略chen.app/LaunchImage_Chen_LYGL-1200-Portrait-2688h@3x.png ... 668 | 63536 bytes for ./Payload/旅游攻略chen.app/LaunchImage_Chen_LYGL-1200-Portrait-2688h@3x.png 669 | copying file ./Payload/旅游攻略chen.app/back@2x.png ... 670 | 293 bytes for ./Payload/旅游攻略chen.app/back@2x.png 671 | copying file ./Payload/旅游攻略chen.app/en.lproj/InfoPlist.strings ... 672 | 42 bytes for ./Payload/旅游攻略chen.app/en.lproj/InfoPlist.strings 673 | copying file ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL29x29@2x~ipad.png ... 674 | 3237 bytes for ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL29x29@2x~ipad.png 675 | copying file ./Payload/旅游攻略chen.app/LaunchImage_Chen_LYGL-700-568h@2x.png ... 676 | 24844 bytes for ./Payload/旅游攻略chen.app/LaunchImage_Chen_LYGL-700-568h@2x.png 677 | copying file ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/common_button_white_highlighted@2x.png ... 678 | 378 bytes for ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/common_button_white_highlighted@2x.png 679 | copying file ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/common_button_white@2x.png ... 680 | 367 bytes for ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/common_button_white@2x.png 681 | copying file ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/empty_failed@2x.png ... 682 | 4136 bytes for ./Payload/旅游攻略chen.app/WeiboSDK.bundle/images/empty_failed@2x.png 683 | copying file ./Payload/旅游攻略chen.app/WeiboSDK.bundle/others/mfp.cer ... 684 | 577 bytes for ./Payload/旅游攻略chen.app/WeiboSDK.bundle/others/mfp.cer 685 | copying file ./Payload/旅游攻略chen.app/back@3x.png ... 686 | 966 bytes for ./Payload/旅游攻略chen.app/back@3x.png 687 | copying file ./Payload/旅游攻略chen.app/back@2x~ipad.png ... 688 | 221 bytes for ./Payload/旅游攻略chen.app/back@2x~ipad.png 689 | copying file ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL29x29~ipad.png ... 690 | 1462 bytes for ./Payload/旅游攻略chen.app/AppIcon_Chen_LYGL29x29~ipad.png 691 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/play_noband@2x.ytcx ... 692 | 1922 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/play_noband@2x.ytcx 693 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/mute.mp3 ... 694 | 60343 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/mute.mp3 695 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_tudou_gray@3x.ytcx ... 696 | 16450 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/corner_tudou_gray@3x.ytcx 697 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/toggle_quality@2x~ipad.ytcx ... 698 | 5810 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/toggle_quality@2x~ipad.ytcx 699 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ad_arrow@2x~ipad.ytcx ... 700 | 1202 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ad_arrow@2x~ipad.ytcx 701 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/bplay@2x.ytcx ... 702 | 3730 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/bplay@2x.ytcx 703 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@2x~ipad.ytcx ... 704 | 82818 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@2x~ipad.ytcx 705 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/loading_normal@3x.ytcx ... 706 | 1474 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/loading_normal@3x.ytcx 707 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ad_fullscreen~ipad.ytcx ... 708 | 1810 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ad_fullscreen~ipad.ytcx 709 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@3x.ytcx ... 710 | 6914 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@3x.ytcx 711 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full@3x.ytcx ... 712 | 6562 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full@3x.ytcx 713 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@3x.ytcx ... 714 | 1362 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@3x.ytcx 715 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_tudou~ipad.ytcx ... 716 | 67570 bytes for ./Payload/旅游攻略chen.app/cloud.bun 717 | 2018-12-20 08:01:35 +0000 dle/corner_tudou~ipad.ytcx 718 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ad_volume@2x~ipad.ytcx ... 719 | 2770 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ad_volume@2x~ipad.ytcx 720 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/loading_youku@2x~ipad.ytcx ... 721 | 53826 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/loading_youku@2x~ipad.ytcx 722 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/play@2x.ytcx ... 723 | 2962 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/play@2x.ytcx 724 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ic_close@2x~ipad.ytcx ... 725 | 1714 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ic_close@2x~ipad.ytcx 726 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku_gray@3x.ytcx ... 727 | 17074 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku_gray@3x.ytcx 728 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/wenjuan_close@2x.ytcx ... 729 | 1234 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/wenjuan_close@2x.ytcx 730 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/bplay~ipad.ytcx ... 731 | 3810 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/bplay~ipad.ytcx 732 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/tip_play~ipad.ytcx ... 733 | 898 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/tip_play~ipad.ytcx 734 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku@2x~ipad.ytcx ... 735 | 4578 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku@2x~ipad.ytcx 736 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/loading_normal@2x.ytcx ... 737 | 978 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/loading_normal@2x.ytcx 738 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/toggle_quality~ipad.ytcx ... 739 | 2754 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/toggle_quality~ipad.ytcx 740 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/bplay@3x.ytcx ... 741 | 1058 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/bplay@3x.ytcx 742 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku_gray~ipad.ytcx ... 743 | 16498 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/corner_youku_gray~ipad.ytcx 744 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full@2x.ytcx ... 745 | 8642 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full@2x.ytcx 746 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ad_volume_off@2x~ipad.ytcx ... 747 | 2418 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ad_volume_off@2x~ipad.ytcx 748 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@2x.ytcx ... 749 | 3570 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@2x.ytcx 750 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/point@2x~ipad.ytcx ... 751 | 4594 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/point@2x~ipad.ytcx 752 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@2x.ytcx ... 753 | 64194 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_full_tudou@2x.ytcx 754 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/play_noband@3x.ytcx ... 755 | 2562 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/play_noband@3x.ytcx 756 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_small@2x~ipad.ytcx ... 757 | 9730 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/player_logo_small@2x~ipad.ytcx 758 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/ad_out@2x~ipad.ytcx ... 759 | 1474 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/ad_out@2x~ipad.ytcx 760 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@2x~ipad.ytcx ... 761 | 1778 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/tip_play@2x~ipad.ytcx 762 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/corner_tudou_gray@2x.ytcx ... 763 | 15650 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/corner_tudou_gray@2x.ytcx 764 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/tip_play_noband~ipad.ytcx ... 765 | 14994 bytes for ./Payload/旅游攻略chen.app/cloud.bundle/tip_play_noband~ipad.ytcx 766 | copying file ./Payload/旅游攻略chen.app/cloud.bundle/wenjuan_ 767 | 2018-12-20 08:01:35 +0000 /usr/bin/ditto exited with 0 768 | 2018-12-20 08:01:35 +0000 Processing step: IDEDistributionAppStoreInformationStep 769 | 2018-12-20 08:01:35 +0000 Skipping step: IDEDistributionAppStoreInformationStep because it said so 770 | 2018-12-20 08:01:35 +0000 Processing step: IDEDistributionCreateManifestStep 771 | 2018-12-20 08:01:35 +0000 Skipping step: IDEDistributionCreateManifestStep because it said so 772 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/TABCardView/TABBaseCardView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TABBaseCardView.h 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TABBaseCardView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/TABCardView/TABBaseCardView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TABBaseCardView.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import "TABBaseCardView.h" 10 | 11 | @implementation TABBaseCardView 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/TABCardView/TABCardView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TABCardView.h 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TABBaseCardView.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol TABCardViewDelegate 15 | 16 | @optional 17 | - (void)tabCardViewCurrentIndex:(NSInteger)index; 18 | 19 | @end 20 | 21 | @interface TABCardView : UIView 22 | 23 | // 卡片内容数组 24 | @property (nonatomic, strong, readonly, nonnull) NSMutableArray * cards; 25 | // default is 10.0. 26 | @property (nonatomic) CGFloat cardCornerRadius; 27 | // 是否展示无数据占位view 28 | @property (nonatomic) BOOL isShowNoDataView; 29 | // 无数据占位图 30 | @property (nonatomic, strong) UIView * noDataView; 31 | // 展示卡片的横坐标偏移量 32 | @property (nonatomic) CGFloat offsetX; 33 | // 展示卡片的纵坐标偏移量 34 | @property (nonatomic) CGFloat offsetY; 35 | 36 | @property (nonatomic, weak) id delegate; 37 | 38 | /** 39 | 初始化方法 40 | 41 | @param frame 位置 42 | @param showCardsNumber 显示的卡片数 43 | @return TABCardView's object 44 | */ 45 | - (instancetype)initWithFrame:(CGRect)frame showCardsNumber:(NSInteger)showCardsNumber; 46 | 47 | - (void)loadCardViewWithData:(NSMutableArray *)cards; 48 | 49 | @end 50 | 51 | NS_ASSUME_NONNULL_END 52 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/TABCardView/TABCardView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TABCardView.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import "TABBaseCardView.h" 10 | #import "TABCardView.h" 11 | 12 | static NSString * kCardViewNoDataString = @"kCardViewNoDataString"; 13 | 14 | #define kCardViewScreenHeight [UIScreen mainScreen].bounds.size.height 15 | 16 | @interface TABCardView () { 17 | __weak TABBaseCardView *currentShowingView; 18 | } 19 | 20 | // 可视卡片透明度数组 21 | @property (nonatomic, strong, readonly) NSMutableArray * alphaArray; 22 | // 卡片手势 23 | @property (nonatomic, strong) UIPanGestureRecognizer * cardPan; 24 | // 展示的卡片数 25 | @property (nonatomic) NSInteger showCardsNumber; 26 | // 当前index 27 | @property (nonatomic) NSInteger currentIndex; 28 | @property (nonatomic) CGPoint oldCenter; 29 | // 卡片总量 30 | @property (nonatomic) NSInteger cardCount; 31 | // 顶部卡片拖动中,底部卡片缩放系数 32 | @property (nonatomic) CGFloat sizePercent; 33 | 34 | @end 35 | 36 | @implementation TABCardView 37 | 38 | - (instancetype)initWithFrame:(CGRect)frame showCardsNumber:(NSInteger)showCardsNumber { 39 | if (self = [super initWithFrame:frame]) { 40 | self.userInteractionEnabled = YES; 41 | self.backgroundColor = [UIColor clearColor]; 42 | self.showCardsNumber = showCardsNumber; 43 | _sizePercent = 0.05; 44 | } 45 | return self; 46 | } 47 | 48 | #pragma mark - Target Methods 49 | 50 | - (void)panHandle:(UIPanGestureRecognizer *)pan { 51 | 52 | // 获取顶部视图 53 | TABBaseCardView * cardView = self.cards[self.currentIndex]; 54 | 55 | CGPoint velocity = [pan velocityInView:[UIApplication sharedApplication].keyWindow]; 56 | 57 | // 开始拖动 58 | if (pan.state == UIGestureRecognizerStateBegan) { 59 | // 缓存卡片最初的位置信息 60 | self.oldCenter = cardView.center; 61 | } 62 | 63 | // 拖动中 64 | { 65 | // 给顶部视图添加动画 66 | CGPoint transLcation = [pan translationInView:cardView]; 67 | // 视图跟随手势移动 68 | cardView.center = CGPointMake(cardView.center.x + transLcation.x, cardView.center.y + transLcation.y); 69 | // 计算偏移系数 70 | CGFloat XOffPercent = (cardView.center.x - self.center.x)/(self.center.x); 71 | CGFloat rotation = M_PI_2/10.5*XOffPercent; 72 | cardView.transform = CGAffineTransformMakeRotation(-rotation); 73 | [pan setTranslation:CGPointZero inView:cardView]; 74 | // 给其余底部视图添加缩放动画 75 | [self animationBlowViewWithXOffPercent:fabs(XOffPercent)]; 76 | } 77 | 78 | // 拖动结束 79 | if (pan.state == UIGestureRecognizerStateEnded) { 80 | 81 | // 移除拖动视图逻辑 82 | // 加速度 小于 1100points/second 83 | if (sqrt(pow(velocity.x, 2) + pow(velocity.y, 2)) < 1100.0) { 84 | 85 | // 移动区域半径大于120pt 86 | if ((sqrt(pow(self.oldCenter.x-cardView.center.x,2) + pow(self.oldCenter.y-cardView.center.y,2))) > 120) { 87 | 88 | // 移除,自然垂落 89 | [UIView animateWithDuration:0.6 animations:^{ 90 | UIWindow * window = [[[UIApplication sharedApplication] delegate] window]; 91 | CGRect rect = [cardView convertRect:cardView.bounds toView:window]; 92 | cardView.center = CGPointMake(cardView.center.x, cardView.center.y+(kCardViewScreenHeight-rect.origin.y+50)); 93 | }]; 94 | [self animationBlowViewWithXOffPercent:1]; 95 | [self performSelector:@selector(cardRemove:) withObject:cardView afterDelay:0.5]; 96 | 97 | }else { 98 | 99 | __weak typeof(self) weakSelf = self; 100 | // 不移除,回到初始位置 101 | [UIView animateWithDuration:0.5 animations:^{ 102 | cardView.center = weakSelf.oldCenter; 103 | cardView.transform = CGAffineTransformMakeRotation(0); 104 | [self animationBlowViewWithXOffPercent:0]; 105 | }]; 106 | } 107 | }else { 108 | 109 | // 移除,以手势速度飞出 110 | [UIView animateWithDuration:0.5 animations:^{ 111 | cardView.center = velocity; 112 | }]; 113 | [self animationBlowViewWithXOffPercent:1]; 114 | [self performSelector:@selector(cardRemove:) withObject:cardView afterDelay:0.25]; 115 | } 116 | } 117 | } 118 | 119 | - (void)cardRemove:(TABBaseCardView *)card { 120 | 121 | if (card) { 122 | [card removeGestureRecognizer:self.cardPan]; 123 | [card removeFromSuperview]; 124 | } 125 | 126 | self.currentIndex --; 127 | if ((NSInteger)self.currentIndex < 0) { 128 | self.currentIndex = self.cardCount - 1; 129 | } 130 | 131 | [self addPanGestureWithView:self.cards[self.currentIndex]]; 132 | [self addNewCard]; 133 | } 134 | 135 | #pragma mark - Public Methods 136 | 137 | - (void)loadCardViewWithData:(NSMutableArray *)cards { 138 | 139 | if (nil == cards) { 140 | return; 141 | } 142 | 143 | if (self.showCardsNumber == 0) { 144 | self.showCardsNumber = 4; 145 | } 146 | 147 | if (self.showCardsNumber >= cards.count) { 148 | self.showCardsNumber = cards.count-1; 149 | } 150 | 151 | if (cards) { 152 | if (self.subviews.count > 0) { 153 | for (UIView *subV in self.subviews) { 154 | if ([subV isKindOfClass:[TABBaseCardView class]] || 155 | [subV.layer.name isEqualToString:kCardViewNoDataString]) { 156 | [subV removeFromSuperview]; 157 | } 158 | } 159 | } 160 | } 161 | 162 | _cards = cards; 163 | self.cardCount = cards.count; 164 | 165 | for (int i = 0; i < self.cardCount; i++) { 166 | TABBaseCardView * cardView = _cards[i]; 167 | cardView.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); 168 | // 位置偏移 169 | cardView.center = CGPointMake(self.center.x + self.offsetX*(self.cardCount-1-i) - self.frame.origin.x, self.center.y + self.offsetY*(self.cardCount-1-i) - self.frame.origin.y); 170 | // 缩放效果 171 | cardView.transform = CGAffineTransformMakeScale(1-_sizePercent*(self.cardCount-i-1), 1-_sizePercent*(self.cardCount-i-1)); 172 | cardView.layer.cornerRadius = self.cardCornerRadius; 173 | cardView.layer.masksToBounds = YES; 174 | cardView.backgroundColor = [UIColor clearColor]; 175 | } 176 | 177 | [self addCardViewsToShow]; 178 | } 179 | 180 | #pragma mark - Private Methods 181 | 182 | - (void)addNewCard { 183 | 184 | // 添加一个视图 185 | if ((int)(self.currentIndex-_showCardsNumber+1) >= 0) { 186 | 187 | TABBaseCardView *cardView = self.cards[self.currentIndex-_showCardsNumber+1]; 188 | cardView.center = CGPointMake(self.center.x + self.offsetX*(_showCardsNumber-1) - self.frame.origin.x, self.center.y + self.offsetY*(_showCardsNumber-1) - self.frame.origin.y); 189 | cardView.transform = CGAffineTransformMakeScale(1-_sizePercent*(_showCardsNumber-1), 1-_sizePercent*(_showCardsNumber-1)); 190 | cardView.alpha = 0; 191 | [self addSubview:cardView]; 192 | [self insertSubview:cardView belowSubview:self.cards[self.currentIndex-_showCardsNumber+2]]; 193 | 194 | currentShowingView = cardView; 195 | }else { 196 | 197 | NSInteger index = self.cardCount + (self.currentIndex-_showCardsNumber+1); 198 | TABBaseCardView *cardView = self.cards[index]; 199 | cardView.center = CGPointMake(self.center.x + self.offsetX*(_showCardsNumber-1) - self.frame.origin.x, self.center.y + self.offsetY*(_showCardsNumber-1) - self.frame.origin.y); 200 | cardView.transform = CGAffineTransformMakeScale(1-_sizePercent*(_showCardsNumber-1), 1-_sizePercent*(_showCardsNumber-1)); 201 | cardView.alpha = 0; 202 | [self addSubview:cardView]; 203 | [self insertSubview:cardView belowSubview:currentShowingView]; 204 | 205 | currentShowingView = cardView; 206 | } 207 | 208 | if (self.delegate) { 209 | [self.delegate tabCardViewCurrentIndex:self.currentIndex]; 210 | } 211 | } 212 | 213 | - (void)addCardViewsToShow { 214 | 215 | if (nil == self.cards || 0 == self.cards.count) { 216 | 217 | if (self.isShowNoDataView) { 218 | 219 | for (int i = 0; i < _showCardsNumber; i++) { 220 | 221 | UIView * cardView = [[UIView alloc] init]; 222 | cardView.backgroundColor = [UIColor whiteColor]; 223 | if (self.noDataView) { 224 | [cardView addSubview:self.noDataView]; 225 | } 226 | cardView.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); 227 | // 位置偏移 228 | cardView.center = CGPointMake(self.center.x + self.offsetX*(_showCardsNumber-1-i) - self.frame.origin.x, self.center.y + self.offsetY*(_showCardsNumber-1-i) - self.frame.origin.y); 229 | // 缩放效果 230 | cardView.transform = CGAffineTransformMakeScale(1-_sizePercent*(_showCardsNumber-i-1), 1-_sizePercent*(_showCardsNumber-i-1)); 231 | cardView.layer.cornerRadius = self.cardCornerRadius; 232 | cardView.layer.masksToBounds = YES; 233 | cardView.alpha = [self.alphaArray[i] floatValue]; 234 | cardView.layer.name = kCardViewNoDataString; 235 | 236 | [self addSubview:cardView]; 237 | } 238 | } 239 | }else { 240 | 241 | if (self.cardCount < _showCardsNumber) { 242 | 243 | NSInteger removeNum = _showCardsNumber - self.cardCount; 244 | _showCardsNumber = self.cardCount; 245 | 246 | for (int i = 0; i < removeNum; i++) { 247 | [self.alphaArray removeObjectAtIndex:0]; 248 | } 249 | 250 | for (int i = 0; i < _showCardsNumber; i++) { 251 | TABBaseCardView * cardView = self.cards[i]; 252 | cardView.alpha = [self.alphaArray[i] floatValue]; 253 | [self addSubview:cardView]; 254 | if (i == _showCardsNumber - 1) { 255 | [self addPanGestureWithView:cardView]; 256 | self.currentIndex = _showCardsNumber - 1; 257 | } 258 | } 259 | }else { 260 | 261 | for (int i = 0; i < _showCardsNumber; i++) { 262 | TABBaseCardView * cardView = self.cards[self.cardCount-_showCardsNumber+i]; 263 | cardView.alpha = [self.alphaArray[i] floatValue]; 264 | [self addSubview:cardView]; 265 | if (i == _showCardsNumber - 1) { 266 | [self addPanGestureWithView:cardView]; 267 | self.currentIndex = self.cardCount - 1; 268 | } 269 | } 270 | } 271 | } 272 | } 273 | 274 | // 视图上的卡片 偏移缩放 275 | - (void)animationBlowViewWithXOffPercent:(CGFloat)XOffPercent { 276 | 277 | for (int i = 0; i < _showCardsNumber - 1; i++) { 278 | 279 | NSInteger index = self.currentIndex - i - 1; 280 | if (index < 0) { 281 | index = self.cardCount + index; 282 | } 283 | 284 | TABBaseCardView * otherView = self.cards[index]; 285 | 286 | if (i != 0) { 287 | // 透明度 288 | CGFloat alpha = [self.alphaArray[_showCardsNumber - i - 2] floatValue] + ([self.alphaArray[_showCardsNumber - i - 1] floatValue] - [self.alphaArray[_showCardsNumber - i - 2] floatValue])*XOffPercent; 289 | otherView.alpha = alpha; 290 | }else { 291 | otherView.alpha = 1.; 292 | } 293 | // 中心 294 | CGPoint point = CGPointMake(self.center.x + self.offsetX*(i + 1) - self.offsetX*XOffPercent - self.frame.origin.x, self.center.y + self.offsetY*(i + 1) - self.offsetY*XOffPercent - self.frame.origin.y); 295 | otherView.center = point; 296 | // 缩放大小 297 | CGFloat scale = 1 - _sizePercent * (i + 1) + XOffPercent * _sizePercent; 298 | otherView.transform = CGAffineTransformMakeScale(scale, scale); 299 | } 300 | } 301 | 302 | - (void)addPanGestureWithView:(TABBaseCardView *)cardView { 303 | // 添加拖动手势 304 | [cardView addGestureRecognizer:self.cardPan]; 305 | } 306 | 307 | #pragma mark - Getter / Setter 308 | 309 | @synthesize alphaArray = _alphaArray; 310 | - (NSMutableArray *)alphaArray { 311 | 312 | NSMutableArray *array = [NSMutableArray array]; 313 | float interval = (self.showCardsNumber - 1)/10.0; 314 | 315 | for (int i = 0; i < self.showCardsNumber; i++) { 316 | if (i == 0) { 317 | [array addObject:@(0.0)]; 318 | continue; 319 | } 320 | if (i == self.showCardsNumber - 1) { 321 | [array addObject:@(1.0)]; 322 | break; 323 | } 324 | [array addObject:@(i*interval + 0.2)]; 325 | } 326 | return _alphaArray = array; 327 | } 328 | 329 | @synthesize cards = _cards; 330 | - (NSMutableArray *)cards { 331 | if (!_cards) { 332 | _cards = [[NSMutableArray alloc]init]; 333 | } 334 | return _cards; 335 | } 336 | 337 | - (void)setShowCardsNumber:(NSInteger)showCardsNumber { 338 | _showCardsNumber = (showCardsNumber > 0)?showCardsNumber:4; 339 | [self alphaArray]; 340 | } 341 | 342 | - (NSInteger)cardCount { 343 | if (!self.cards) { 344 | return 0; 345 | } 346 | _cardCount = self.cards.count; 347 | return _cardCount; 348 | } 349 | 350 | - (CGFloat)cardCornerRadius { 351 | if (_cardCornerRadius == 0.0) { 352 | return 10.0; 353 | } 354 | return _cardCornerRadius; 355 | } 356 | 357 | - (CGFloat)offsetX { 358 | if (_offsetX == 0.0) { 359 | return 20.0; 360 | } 361 | return _offsetX; 362 | } 363 | 364 | - (void)setIsShowNoDataView:(BOOL)isShowNoDataView { 365 | _isShowNoDataView = isShowNoDataView; 366 | if (isShowNoDataView) { 367 | [self addCardViewsToShow]; 368 | } 369 | } 370 | 371 | - (void)setNoDataView:(UIView *)noDataView { 372 | _noDataView = noDataView; 373 | if (self.isShowNoDataView) { 374 | for (int i = 0; i < self.subviews.count; i++) { 375 | UIView *subV = self.subviews[i]; 376 | if ([subV.layer.name isEqualToString:kCardViewNoDataString]) { 377 | [subV addSubview:noDataView]; 378 | } 379 | } 380 | } 381 | } 382 | 383 | - (UIPanGestureRecognizer *)cardPan { 384 | if (!_cardPan) { 385 | _cardPan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panHandle:)]; 386 | } 387 | return _cardPan; 388 | } 389 | 390 | @end 391 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/TABDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // TABDefine.h 3 | // TABBaseProject 4 | // 5 | // Created by tigerAndBull on 2018/10/26. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #ifndef TABDefine_h 10 | #define TABDefine_h 11 | 12 | #define kScreenWidth [UIScreen mainScreen].bounds.size.width 13 | #define kScreenHeight [UIScreen mainScreen].bounds.size.height 14 | #define tabbarSize (self.hidesBottomBarWhenPushed ? CGSizeZero : self.navigationController.tabBarController.tabBar.frame.size) 15 | #define navigationBarSize (self.navigationController.navigationBar.frame.size) 16 | #define statusFrameSize ([UIApplication sharedApplication].statusBarFrame.size) 17 | 18 | // use to iPad 19 | #define isIPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 20 | // use to iphone 5,5s,6,7,8 21 | #define isIPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 22 | // use to iphone 6P,7P,8P 23 | #define isIPhonePlus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreen mainScreen] currentMode].size) : NO) 24 | // use to iphoneX,XR,XS,XS Max 25 | #define isIPhoneFill (([UIScreen mainScreen].bounds.size.height == 812) || ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isIPad : NO) || ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isIPad : NO) || ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !isIPad : NO)) 26 | 27 | #define kNavigationHeight (isIPhoneFill?88:64) 28 | #define kTabbarHeight (isIPhoneFill?83:49) 29 | #define kSafeAreaHeight (isIPhoneFill?34:0) 30 | #define kStatusHeight (isIPhoneFill?44:20) 31 | 32 | #define kFont(x) [UIFont systemFontOfSize:((isIPhonePlus)?(x + 1):((isIPhoneFill)?(x + 2):x))] 33 | #define kBlodFont(x) [UIFont boldSystemFontOfSize:((isIPhonePlus)?(x + 1):((isIPhoneFill)?(x + 2):x))] 34 | 35 | #define kColor(c) [UIColor colorWithRed:((c>>24)&0xFF)/255.0 green:((c>>16)&0xFF)/255.0 blue:((c>>8)&0xFF)/255.0 alpha:((c)&0xFF)/255.0] 36 | #define kBackColor kColor(0x20272FFF) 37 | #define kNavigationColor ([UIColor colorWithRed:139/255.0 green:221/255.0 blue:94/255.0 alpha:1]) 38 | #define kHeight(x) ((kScreenHeight/812.0)*x) 39 | #define kWidth(x) ((kScreenWidth/375.0)*x) 40 | 41 | #endif /* TABDefine_h */ 42 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | #import "TABCardView.h" 12 | #import "CardView.h" 13 | 14 | #import "TABDefine.h" 15 | 16 | @interface ViewController () 17 | 18 | @property (nonatomic,strong) TABCardView * cardView; 19 | 20 | @end 21 | 22 | @implementation ViewController 23 | 24 | - (void)viewDidLoad { 25 | [super viewDidLoad]; 26 | // Do any additional setup after loading the view, typically from a nib. 27 | 28 | self.view.backgroundColor = kBackColor; 29 | 30 | self.cardView = [[TABCardView alloc] initWithFrame:CGRectMake(40, (kScreenHeight - 320)/2, kScreenWidth - 120, 320) showCardsNumber:4]; 31 | self.cardView.isShowNoDataView = YES; 32 | self.cardView.noDataView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"占位图"]]; 33 | self.cardView.delegate = self; 34 | [self.view addSubview:self.cardView]; 35 | 36 | // 模拟请求数据 37 | [self performSelector:@selector(getData) withObject:nil afterDelay:3.0]; 38 | } 39 | 40 | #pragma mark - Target Method 41 | 42 | - (void)getData { 43 | 44 | NSMutableArray *array = [[NSMutableArray alloc] init]; 45 | for (int i = 0; i < 10; i ++) { 46 | CardView *view = [[CardView alloc] init]; 47 | [view updateViewWithData:[NSString stringWithFormat:@"%d.jpg",i+1]]; 48 | view.clickBlock = ^{ 49 | NSLog(@"点击了卡片"); 50 | }; 51 | [array addObject:view]; 52 | } 53 | [self.cardView loadCardViewWithData:array]; 54 | } 55 | 56 | #pragma mark - TABCardViewDelegate 57 | 58 | - (void)tabCardViewCurrentIndex:(NSInteger)index { 59 | NSLog(@"当前处于卡片数组下标:%ld",(long)index); 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /TABCardProject/TABCardProject/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TABCardProject 4 | // 5 | // Created by tigerAndBull on 2018/12/17. 6 | // Copyright © 2018年 tigerAndBull. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TABCardProject/TABCardView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | #库名,和文件名一样 4 | s.name = "TABCardView" 5 | 6 | #tag方式:填tag名称 7 | #commit方式:填commit的id 8 | s.version = "0.0.2" 9 | 10 | #库的简介 11 | s.summary = "TABCardView是一个iOS平台上的卡片视图的封装" 12 | 13 | #库的描述 14 | s.description = <<-DESC 15 | TABCardView是一个iOS平台上的卡片视图的封装 16 | DESC 17 | #库的远程仓库地址 18 | s.homepage = "https://github.com/tigerAndBull/TABCardView" 19 | 20 | #版权方式 21 | s.license = { :type => "MIT", :file => "LICENSE" } 22 | 23 | #库的作者 24 | s.author = { "tigerAndBull" => "1429299849@qq.com" } 25 | 26 | #依赖于ios平台上的8.0 27 | s.platform = :ios, "8.0" 28 | 29 | #库的地址 30 | s.source = { :git => "https://github.com/tigerAndBull/TABCardView.git", :tag => "0.0.2" } 31 | 32 | s.source_files = 'TABCardProject/TABCardView/**/*.{h,m}' 33 | 34 | end 35 | --------------------------------------------------------------------------------