├── ThemeManagerDemo
├── ThemeManagerDemo
│ ├── Media.xcassets
│ │ ├── Contents.json
│ │ └── icon.imageset
│ │ │ ├── icon@2x.png
│ │ │ └── Contents.json
│ ├── Sample.bundle
│ │ ├── icon@2x.png
│ │ └── defaults.plist
│ ├── ViewController.h
│ ├── defaults.plist
│ ├── AppDelegate.h
│ ├── main.m
│ ├── BaseSample.bundle
│ │ └── defaults.plist
│ ├── Images.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Info.plist
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.xib
│ ├── ViewController.m
│ └── AppDelegate.m
├── Podfile.lock
├── ThemeManagerDemo.xcodeproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── project.pbxproj
├── ThemeManagerDemo.xcworkspace
│ └── contents.xcworkspacedata
├── Podfile
├── ThemeManagerDemoTests
│ ├── Info.plist
│ └── ThemeManagerDemoTests.m
└── Assets
│ └── Info.plist
├── .gitignore
├── LICENSE
├── AWLThemeManager
├── AWLThemeManager.h
└── AWLThemeManager.m
├── AWLThemeManager.podspec
└── README.md
/ThemeManagerDemo/ThemeManagerDemo/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Sample.bundle/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/appwilldev/AWLThemeManager/HEAD/ThemeManagerDemo/ThemeManagerDemo/Sample.bundle/icon@2x.png
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Media.xcassets/icon.imageset/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/appwilldev/AWLThemeManager/HEAD/ThemeManagerDemo/ThemeManagerDemo/Media.xcassets/icon.imageset/icon@2x.png
--------------------------------------------------------------------------------
/ThemeManagerDemo/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - UIColor-HexString (1.3.0)
3 |
4 | DEPENDENCIES:
5 | - UIColor-HexString (~> 1.3.0)
6 |
7 | SPEC CHECKSUMS:
8 | UIColor-HexString: fadc2e1389db19147ac99dee92222d3bd8bfec4a
9 |
10 | COCOAPODS: 0.39.0
11 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '8.0'
3 | # Uncomment this line if you're using Swift
4 | # use_frameworks!
5 |
6 | target 'ThemeManagerDemo' do
7 | pod 'UIColor-HexString', '~> 1.3.0'
8 | end
9 |
10 | target 'ThemeManagerDemoTests' do
11 |
12 | end
13 |
14 | target 'Assets' do
15 |
16 | end
17 |
18 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/defaults.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AWL_THEME_NAME
6 | AssetsTheme
7 | AWL_BASE_THEME
8 | SampleTheme
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. 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 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Sample.bundle/defaults.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AWL_THEME_NAME
6 | SampleTheme
7 | AWL_BASE_THEME
8 | BaseSampleTheme
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. 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 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Media.xcassets/icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/BaseSample.bundle/defaults.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AWL_THEME_NAME
6 | BaseSampleTheme
7 | Content_Text_Color
8 | 142,94,231,1
9 | Content_Font
10 | Snell Roundhand,14
11 | View_BG_Color
12 | Content_Text_Color
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | Pods/
27 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemoTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | com.appwill.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/Assets/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | NSHumanReadableCopyright
24 | Copyright © 2016年 AppWill. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemoTests/ThemeManagerDemoTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeManagerDemoTests.m
3 | // ThemeManagerDemoTests
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface ThemeManagerDemoTests : XCTestCase
13 |
14 | @end
15 |
16 | @implementation ThemeManagerDemoTests
17 |
18 | - (void)setUp {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown {
24 | // Put teardown code here. This method is called after the invocation of each test method in the class.
25 | [super tearDown];
26 | }
27 |
28 | - (void)testExample {
29 | // This is an example of a functional test case.
30 | XCTAssert(YES, @"Pass");
31 | }
32 |
33 | - (void)testPerformanceExample {
34 | // This is an example of a performance test case.
35 | [self measureBlock:^{
36 | // Put the code you want to measure the time of here.
37 | }];
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Appwill Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | com.appwill.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/AWLThemeManager/AWLThemeManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // AWLThemeManager.h
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface AWLThemeManager : NSObject
13 |
14 | @property (nonatomic, strong) NSString *currentTheme;
15 |
16 | // return themeName
17 | - (NSString*)addTheme:(NSString*)themePath;
18 | - (NSArray*)allThemes;
19 |
20 | //Get color from defaults.plist
21 | - (UIColor*)colorForKey:(NSString*)key;
22 | - (UIColor*)colorForKey:(NSString*)key forTheme:(NSString*)themeName;
23 |
24 | //Get font from defaults.plist
25 | - (UIFont*)fontForKey:(NSString*)key;
26 | - (UIFont *)fontForKey:(NSString *)key forTheme:(NSString*)themeName;
27 |
28 | //Get img name from defaults.plist, and then img from theme bundle. Use key as image name if img name is missed.
29 | - (UIImage*)imageNamed:(NSString*)key;
30 | - (UIImage *)imageNamed:(NSString *)key forTheme:(NSString*)themeName;
31 |
32 | //key in defaults.plist of the current theme
33 | - (id)objectForKey:(NSString*)key;
34 | - (id)objectForKey:(NSString *)key forTheme:(NSString*)themeName;
35 |
36 | //file path in the current theme bundle
37 | - (NSString*)filePathForFileName:(NSString*)fileName;
38 | - (NSString *)filePathForFileName:(NSString *)fileName ofType:(NSString*) type;
39 | - (NSString*)filePathForFileName:(NSString *)fileName forTheme:(NSString*)themeName;
40 | - (NSString*)filePathForFileName:(NSString *)name ofType:(NSString*) type forTheme:(NSString*)themeName;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "AWLThemeManager.h"
11 |
12 | @interface ViewController ()
13 |
14 | @end
15 |
16 | @implementation ViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 |
21 | NSString *bundlePath1 = [[NSBundle mainBundle] pathForResource:@"BaseSample" ofType:@"bundle"];
22 | NSString *bundlePath2 = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"bundle"];
23 | NSString *bundlePath3 = [[NSBundle mainBundle] pathForResource:@"Assets" ofType:@"bundle"];
24 | AWLThemeManager *mgr = [[AWLThemeManager alloc] init];
25 | [mgr addTheme:bundlePath1];
26 | [mgr addTheme:bundlePath2];
27 | mgr.currentTheme = [mgr addTheme:bundlePath3];
28 | UIImage *img = [mgr imageNamed:@"icon"];
29 | UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
30 | imgView.center = CGPointMake(CGRectGetWidth(self.view.bounds)/2, CGRectGetHeight(self.view.bounds)/2);
31 | [self.view addSubview:imgView];
32 |
33 | UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
34 | titleLabel.center = CGPointMake(imgView.center.x, CGRectGetMaxY(imgView.frame) + 30);
35 | titleLabel.textAlignment = NSTextAlignmentCenter;
36 | titleLabel.backgroundColor = [UIColor whiteColor];
37 | titleLabel.textColor = [mgr colorForKey:@"Content_Text_Color"];
38 | titleLabel.font = [mgr fontForKey:@"Content_Font"];
39 | titleLabel.text = @"Hello, world!";
40 | [self.view addSubview:titleLabel];
41 |
42 | self.view.backgroundColor = [mgr colorForKey:@"View_BG_Color"];
43 | }
44 |
45 | - (void)didReceiveMemoryWarning {
46 | [super didReceiveMemoryWarning];
47 | // Dispose of any resources that can be recreated.
48 | }
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "AWLThemeManager.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 |
22 | return YES;
23 | }
24 |
25 | - (void)applicationWillResignActive:(UIApplication *)application {
26 | // 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.
27 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
28 | }
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // 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.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 | - (void)applicationWillEnterForeground:(UIApplication *)application {
36 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
37 | }
38 |
39 | - (void)applicationDidBecomeActive:(UIApplication *)application {
40 | // 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.
41 | }
42 |
43 | - (void)applicationWillTerminate:(UIApplication *)application {
44 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
20 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/AWLThemeManager.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # Be sure to run `pod spec lint AWLThemeManager.podspec' to ensure this is a
3 | # valid spec and to remove all comments including this before submitting the spec.
4 | #
5 | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
7 | #
8 |
9 | Pod::Spec.new do |s|
10 |
11 | # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
12 | #
13 | # These will help people to find your library, and whilst it
14 | # can feel like a chore to fill in it's definitely to your advantage. The
15 | # summary should be tweet-length, and the description more in depth.
16 | #
17 |
18 | s.name = "AWLThemeManager"
19 | s.version = "1.0.7"
20 | s.summary = "AWLThemeManager is a lightweight theme manager for iOS."
21 | s.homepage = "https://github.com/appwilldev/AWLThemeManager"
22 | # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
23 |
24 |
25 | # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
26 | #
27 | # Licensing your code is important. See http://choosealicense.com for more info.
28 | # CocoaPods will detect a license file if there is a named LICENSE*
29 | # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
30 | #
31 |
32 | s.license = "MIT"
33 | # s.license = { :type => "MIT", :file => "FILE_LICENSE" }
34 |
35 |
36 | # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
37 | #
38 | # Specify the authors of the library, with email addresses. Email addresses
39 | # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
40 | # accepts just a name if you'd rather not provide an email address.
41 | #
42 | # Specify a social_media_url where others can refer to, for example a twitter
43 | # profile URL.
44 | #
45 |
46 | s.author = { "neo.chen" => "cooketjoy@gmail.com" }
47 | # Or just: s.author = "yun.chen"
48 | # s.authors = { "yun.chen" => "cooketjoy@gmail.com" }
49 | # s.social_media_url = "http://twitter.com/yun.chen"
50 |
51 | # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
52 | #
53 | # If this Pod runs only on iOS or OS X, then specify the platform and
54 | # the deployment target. You can optionally include the target after the platform.
55 | #
56 |
57 | # s.platform = :ios
58 | s.platform = :ios, "6.0"
59 |
60 | # When using multiple platforms
61 | # s.ios.deployment_target = "5.0"
62 | # s.osx.deployment_target = "10.7"
63 |
64 |
65 | # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
66 | #
67 | # Specify the location from where the source should be retrieved.
68 | # Supports git, hg, bzr, svn and HTTP.
69 | #
70 |
71 | s.source = { :git => "https://github.com/appwilldev/AWLThemeManager.git", :tag => s.version.to_s }
72 |
73 |
74 | # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
75 | #
76 | # CocoaPods is smart about how it includes source code. For source files
77 | # giving a folder will include any swift, h, m, mm, c & cpp files.
78 | # For header files it will include any header in the folder.
79 | # Not including the public_header_files will make all headers public.
80 | #
81 |
82 | s.source_files = "AWLThemeManager/*.{h,m}"
83 | s.public_header_files = "AWLThemeManager/*.h"
84 |
85 |
86 | # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
87 | #
88 | # A list of resources included with the Pod. These are copied into the
89 | # target bundle with a build phase script. Anything else will be cleaned.
90 | # You can preserve files from being cleaned, please don't preserve
91 | # non-essential files like tests, examples and documentation.
92 | #
93 |
94 | # s.resource = "icon.png"
95 | # s.resources = "Resources/*.png"
96 |
97 | # s.preserve_paths = "FilesToSave", "MoreFilesToSave"
98 |
99 |
100 | # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
101 | #
102 | # Link your library with frameworks, or libraries. Libraries do not include
103 | # the lib prefix of their name.
104 | #
105 |
106 | # s.framework = "SomeFramework"
107 | # s.frameworks = "SomeFramework", "AnotherFramework"
108 |
109 | # s.library = "iconv"
110 | # s.libraries = "iconv", "xml2"
111 |
112 |
113 | # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
114 | #
115 | # If your library depends on compiler flags you can set them in the xcconfig hash
116 | # where they will only apply to your library. If you depend on other Podspecs
117 | # you can include multiple dependencies to ensure it works.
118 |
119 | s.requires_arc = true
120 |
121 | # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
122 | # s.dependency "JSONKit", "~> 1.4"
123 |
124 | s.dependency "UIColor-HexString", "~> 1.3.0"
125 |
126 | end
127 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AWLThemeManager
2 |
3 | [](https://img.shields.io/cocoapods/v/AWLThemeManager.svg)
4 |
5 | AWLThemeManager is a lightweight theme manager for iOS.
6 | ## Features
7 |
8 | ### What can be customized
9 |
10 | 1. Image;
11 | 2. Font;
12 | 3. Color;
13 | 4. Property-list supported objects
14 | 5. Any file in bundle.
15 |
16 | ### Theme Inheritance
17 |
18 | In actual work, there may be a little difference among themes. In a traditional way, you need to keep the same content in every theme. This is a bad way if you want to change the value, you need find all the places and change it.
19 | From now on, you can feel release if you want to do that because of the inheritance of AWLThemeManager. You just need to modify the root theme then all the themes that inheritant from the root theme will be changed to the new value.
20 |
21 | ## How to use
22 |
23 | ### Import to your poject
24 |
25 | * Use cocoapods
26 |
27 | pod 'AWLThemeManager'
28 |
29 | * Traditional way
30 | Just add the header and source file to your project
31 | * AWLThemeManager.h
32 | * AWLThemeManager.m
33 |
34 | ### Write your own theme package
35 |
36 | **Bundle is preferred as theme package**, though folder can also be used.
37 |
38 | The structure of bundle file is like the follow screenshot:
39 |
40 | 
41 |
42 | defaults.plist is necessary. Add other files to the root directory of bundle.
43 |
44 | ### defaults.plist
45 | defaults.plist is used to set the property of themes, include color, font etc.
46 |
47 | 
48 |
49 | #### Base info
50 | Default key used in defualts.plist:
51 |
52 | * AWL_THEME_NAME
53 |
54 | This key is necessary. it is the name of the theme, used to identify the theme, must be only.
55 |
56 | * AWL_BASE_THEME
57 |
58 | Alternative. If you want to use theme as your base theme, you should add this key. Set the name of base theme to this key.
59 |
60 | #### Define Color
61 | The format of color is :
62 |
63 | 
64 |
65 | It will return the color use follow method:
66 |
67 | [UIColor colorWithRed:[array[0] doubleValue]/255
68 | green:[array[1] doubleValue]/255
69 | blue:[array[2] doubleValue]/255
70 | alpha:[array[3] doubleValue]];
71 |
72 | Make sure you set the right value to the color.
73 |
74 | **Support white colorspace format**. Colors can now be specified in white colorspace (e.g. 0.4,1).
75 |
76 | **Support color with pattern image**. Colors can now be specified as a pattern image with the format "@[ImageName],[Optional Alpha]" (e.g. @Foo", "@Foo,0.5").
77 |
78 | **Support hex format**. Specify colors in hex format as
79 |
80 | #RGB
81 | #ARGB
82 | #RRGGBB
83 | #AARRGGBB
84 |
85 | **Support reference**. If you want to set the same value to different color key, you can set the key of one color to another color, then AWLThemeManager will find the actual value of the color.
86 |
87 | **Modify alpha by reference**. If you reference a color, e.g. “COLOR1” = “255,0,0,1”, “COLOR2” =
88 | “COLOR1” you can now append “:[alpha]” to the reference to modify it’s
89 | alpha, e.g. “COLOR2” = “COLOR1:0.2” will equate to “255,0,0,0.2”.
90 |
91 | #### Define Font
92 | The format of font is :
93 |
94 | 
95 |
96 | The first one is name of font, second is size of the font.
97 | It will return the font use follow method:
98 |
99 | [UIFont fontWithName:fontName size:fontSize]
100 |
101 | If you want to use system font, you should ignore the first value, like this:
102 |
103 | ,14 //systemFontOfSize
104 | bold,14 //boldSystemFontOfSize
105 | italic,14 //italicSystemFontOfSize
106 |
107 | **Support reference**. Same with the color.
108 |
109 | ### Define image
110 | There are two way for adding img to theme bundle:
111 |
112 | 1. Put the image file in the bundle;
113 | 2. Add a xcassets file, then put image files in the xcassets.
114 |
115 | For method 2, the bundle needs to be an actual OS X bundle target in the project with
116 | it's SDK set to iOS & a valid info.plist in order for Xcode to compile
117 | the .xcassets file inside it. Please refer to Assets.bundle in demo project.
118 |
119 |
120 | **Support reference**. Same with the color. If image name isn't found in defaults.plist, we use key as image name.
121 |
122 | ### File
123 | Now you can have “foo”->”bar” in the theme and search all bundles for
124 | “foo” of type “dat”, in addition to falling back to the main bundle. If
125 | key “foo” is not found, “foo” is assumed to be the file name.
126 |
127 | #### Other
128 | You can add whatever you want to the defaults.plist. Just use `objectForKey:` to get the value.
129 |
130 |
131 |
132 | ### How to use in your project
133 |
134 | Add the absolute path of bundle to AWLThemeManager object, then set the current theme that you want.
135 | For example:
136 |
137 | ```objc
138 | NSString *bundlePath1 = [[NSBundle mainBundle] pathForResource:@"BaseSample" ofType:@"bundle"];
139 | NSString *bundlePath2 = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"bundle"];
140 | AWLThemeManager *mgr = [[AWLThemeManager alloc] init];
141 | [mgr addTheme:bundlePath1];
142 | mgr.currentTheme = [mgr addTheme:bundlePath2];
143 | ```
144 |
145 | Then you can access the resource use the same AWLThemeManager object as follow.
146 |
147 | ```objc
148 | UIImage *img = [mgr imageNamed:@"icon"];
149 | titleLabel.textColor = [mgr colorForKey:@"Content_Text_Color"];
150 | titleLabel.font = [mgr fontForKey:@"Content_Font"];
151 | ```
152 |
153 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/AWLThemeManager/AWLThemeManager.m:
--------------------------------------------------------------------------------
1 | //
2 | // AWLThemeManager.m
3 | // ThemeManagerDemo
4 | //
5 | // Created by Neeeo on 14-10-16.
6 | // Copyright (c) 2014年 AppWill. All rights reserved.
7 | //
8 |
9 | #import "AWLThemeManager.h"
10 | #import "UIColor+HexString.h"
11 |
12 | @interface AWLThemeManager ()
13 |
14 | @property (nonatomic, strong) NSMutableDictionary *themeList;
15 | @property (nonatomic, strong) NSMutableDictionary *themeRelationship;
16 | @property (nonatomic, strong) NSMutableDictionary *themeDefaultsList;
17 |
18 | @end
19 |
20 | @implementation AWLThemeManager
21 |
22 | - (instancetype)init
23 | {
24 | self = [super init];
25 | if (self) {
26 | _themeList = [NSMutableDictionary dictionary];
27 | _themeRelationship = [NSMutableDictionary dictionary];
28 | _themeDefaultsList = [NSMutableDictionary dictionary];
29 | }
30 |
31 | return self;
32 | }
33 |
34 | - (NSString*)addTheme:(NSString *)themePath
35 | {
36 | if ([self isValidString:themePath] == NO) {
37 | return nil;
38 | }
39 |
40 | if ([[NSFileManager defaultManager] fileExistsAtPath:themePath] == NO) {
41 | return nil;
42 | }
43 |
44 | NSDictionary *defaults = [self defaultsForTheme:themePath];
45 | if (defaults) {
46 | NSString *themeName = defaults[@"AWL_THEME_NAME"];
47 | if ([self isValidString:themeName]) {
48 | [self.themeDefaultsList setObject:defaults forKey:themeName];
49 | [self.themeList setObject:themePath forKey:themeName];
50 |
51 | NSString *baseTheme = defaults[@"AWL_BASE_THEME"];
52 | if ([self isValidString:baseTheme]) {
53 | [self.themeRelationship setObject:baseTheme forKey:themeName];
54 | }
55 |
56 | return themeName;
57 | }
58 | }
59 |
60 | return nil;
61 | }
62 |
63 | - (NSDictionary*)defaultsForTheme:(NSString*)themePath
64 | {
65 | NSString *path = [themePath stringByAppendingPathComponent:@"defaults.plist"];
66 | if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
67 | return [NSDictionary dictionaryWithContentsOfFile:path];
68 | }
69 |
70 | return nil;
71 | }
72 |
73 | - (NSArray *)allThemes
74 | {
75 | return [self.themeList allKeys];
76 | }
77 |
78 | - (UIColor *)colorForKey:(NSString *)key
79 | {
80 | return [self colorForKey:key forTheme:self.currentTheme];
81 | }
82 |
83 | - (UIColor *)colorForKey:(NSString *)key forTheme:(NSString *)themeName
84 | {
85 | if ([self isValidString:themeName] == NO || [self isValidString:key] == NO) {
86 | return nil;
87 | }
88 |
89 | NSString *colorValue = [self objectForKey:key forTheme:themeName];
90 | UIColor *color = [self colorFromString:colorValue];
91 | if (color == nil && [self isValidString:colorValue]) {
92 | NSArray* referenceColor = [colorValue componentsSeparatedByString:@":"];
93 | colorValue = referenceColor.firstObject;
94 | color = [self colorForKey:colorValue forTheme:themeName];
95 | if (referenceColor.count > 1) {
96 | color = [color colorWithAlphaComponent:[referenceColor[1] doubleValue]];
97 | }
98 | }
99 |
100 | return color;
101 | }
102 |
103 | - (UIColor*)colorFromString:(NSString*)colorValue
104 | {
105 | if ([self isValidString:colorValue]) {
106 |
107 | if ([colorValue hasPrefix: @"@"]) {
108 | NSArray* array = [colorValue componentsSeparatedByString:@","];
109 | NSString* patternName = [array[0] substringFromIndex:1];
110 | UIImage* patternImage = [self imageNamed:patternName];
111 | if (patternImage == nil) {
112 | return nil;
113 | }
114 | UIColor* color = [UIColor colorWithPatternImage: patternImage];
115 | if (array.count == 2) {
116 | color = [color colorWithAlphaComponent: [array[1] doubleValue]];
117 | }
118 | return color;
119 | }
120 | else if ([colorValue hasPrefix: @"#"]) {
121 | return [UIColor colorWithHexString: colorValue];
122 | }
123 |
124 | NSArray* array = [colorValue componentsSeparatedByString:@","];
125 | if (array && [array count] == 2) {
126 | return [UIColor colorWithWhite:[array[0] doubleValue]
127 | alpha:[array[1] doubleValue]];
128 | }
129 | else if (array && [array count] == 4) {
130 | return [UIColor colorWithRed:[array[0] doubleValue]/255.0
131 | green:[array[1] doubleValue]/255.0
132 | blue:[array[2] doubleValue]/255.0
133 | alpha:[array[3] doubleValue]];
134 | }
135 | }
136 |
137 | return nil;
138 | }
139 |
140 | - (UIImage *)imageNamed:(NSString *)key
141 | {
142 | return [self imageNamed:key forTheme:self.currentTheme];;
143 | }
144 |
145 | - (UIImage *)imageNamed:(NSString *)key forTheme:(NSString*)themeName
146 | {
147 | if ([self isValidString:themeName] == NO || [self isValidString:key] == NO) {
148 | return nil;
149 | }
150 |
151 | NSString *imgName = [self objectForKey:key forTheme:themeName];
152 |
153 | if (imgName == nil) {
154 | imgName = key;
155 | }
156 |
157 | UIImage* img = nil;
158 | NSBundle* bundle = [NSBundle bundleWithPath:self.themeList[themeName]];
159 |
160 | if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_8_0) {
161 | img = [UIImage imageNamed:imgName inBundle:bundle compatibleWithTraitCollection:nil];
162 | }
163 | #ifdef AWLThemeManager_XCASSETS_iOS7
164 | else {
165 | //This is included for reference/completeness. It fetches the device specific
166 | //image from the compiled Assets.car embedded in the theme bundle for iOS7 devices.
167 | //However, it is a *PRIVATE API*
168 | //As such, all relevant warnings and caveats apply to it's usage
169 | //IF you want to enable with cocoapods you'll need this:
170 | //https://guides.cocoapods.org/syntax/podfile.html#post_install
171 | static NSString* iOS7PrivateCompatSelector = @"_" @"device" @"Specific" @"ImageNamed:" @"inBundle:";
172 | SEL deviceImageNamed = NSSelectorFromString(iOS7PrivateCompatSelector);
173 | if ([UIImage respondsToSelector: deviceImageNamed]) {
174 | img = [UIImage performSelector: deviceImageNamed withObject:imgName withObject:bundle];
175 | }
176 | }
177 | #endif
178 |
179 | if (img == nil) {
180 | NSString *path = self.themeList[themeName];
181 | path = [self relativePathToMainBundle:path];
182 | NSString *filePath = [path stringByAppendingPathComponent:imgName];
183 | img = [UIImage imageNamed:filePath];
184 | }
185 |
186 | if (img == nil) {
187 | NSString *baseTheme = self.themeRelationship[themeName];
188 | if ([self isValidString:baseTheme]) {
189 | img = [self imageNamed:imgName forTheme:baseTheme];
190 | }
191 | else {
192 | img = [UIImage imageNamed:imgName];
193 | }
194 | }
195 |
196 | return img;
197 | }
198 |
199 | - (NSString*)relativePathToMainBundle:(NSString*)path
200 | {
201 | NSString *mainBundlePath = [[NSBundle mainBundle] bundlePath];
202 | NSString *appDirectory = [mainBundlePath stringByDeletingLastPathComponent];
203 | NSString *relativePath = [path stringByReplacingOccurrencesOfString:appDirectory withString:@".."];
204 | return relativePath;
205 | }
206 |
207 | - (UIFont *)fontForKey:(NSString *)key
208 | {
209 | return [self fontForKey:key forTheme:self.currentTheme];
210 | }
211 |
212 | - (UIFont *)fontForKey:(NSString *)key forTheme:(NSString*)themeName
213 | {
214 | if ([self isValidString:themeName] == NO || [self isValidString:key] == NO) {
215 | return nil;
216 | }
217 |
218 | NSString *fontValue = [self objectForKey:key forTheme:themeName];
219 | UIFont *font = [self fontFromString:fontValue];
220 | if (font == nil && [self isValidString:fontValue]) {
221 | font = [self fontForKey:fontValue forTheme:themeName];
222 | }
223 |
224 | return font;
225 | }
226 |
227 | - (UIFont*)fontFromString:(NSString*)fontValue
228 | {
229 | UIFont *font = nil;
230 | if ([self isValidString:fontValue]) {
231 | NSArray *array = [fontValue componentsSeparatedByString:@","];
232 | if (array && array.count == 2) {
233 | NSString *fontName = array[0];
234 | CGFloat fontSize = [array[1] doubleValue];
235 | if ([self isValidString:fontName]) {
236 | if ([fontName isEqualToString:@"bold"]) {
237 | font = [UIFont boldSystemFontOfSize:fontSize];
238 | }
239 | else if ([fontName isEqualToString:@"italic"]) {
240 | font = [UIFont italicSystemFontOfSize:fontSize];
241 | }
242 | else {
243 | font = [UIFont fontWithName:fontName size:fontSize];
244 | }
245 | }
246 | else {
247 | font = [UIFont systemFontOfSize:fontSize];
248 | }
249 | }
250 | }
251 |
252 | return font;
253 | }
254 |
255 | - (id)objectForKey:(NSString *)key
256 | {
257 | return [self objectForKey:key forTheme:self.currentTheme];
258 | }
259 |
260 | - (id)objectForKey:(NSString *)key forTheme:(NSString*)themeName
261 | {
262 | if ([self isValidString:themeName] == NO || [self isValidString:key] == NO) {
263 | return nil;
264 | }
265 |
266 | NSDictionary *defaults = self.themeDefaultsList[themeName];
267 | id obj = defaults[key];
268 | if (obj == nil) {
269 | NSString *baseTheme = self.themeRelationship[themeName];
270 | obj = [self objectForKey:key forTheme:baseTheme];
271 | }
272 |
273 | return obj;
274 | }
275 |
276 | //Keep for back compat
277 | - (NSString *)filePathForFileName:(NSString *)fileName
278 | {
279 | return [self filePathForFileName:fileName forTheme:self.currentTheme];
280 | }
281 |
282 | - (NSString *)filePathForFileName:(NSString *)fileName ofType:(NSString*) type
283 | {
284 | return [self filePathForFileName:fileName ofType:type forTheme:self.currentTheme];
285 | }
286 |
287 | //Keep for back compat
288 | - (NSString*)filePathForFileName:(NSString *)name forTheme:(NSString*)themeName
289 | {
290 | return [self filePathForFileName:name ofType:nil forTheme:themeName];
291 | }
292 |
293 | - (NSString*)filePathForFileName:(NSString *)name ofType:(NSString*) type forTheme:(NSString*)themeName
294 | {
295 | if ([self isValidString:themeName] == NO || [self isValidString:name] == NO) {
296 | return nil;
297 | }
298 |
299 | NSString *fileName = [self objectForKey:name forTheme:themeName];
300 |
301 | if (fileName == nil) {
302 | fileName = name;
303 | }
304 |
305 | NSBundle* themeBundle = [NSBundle bundleWithPath:self.themeList[themeName]];
306 | NSString* filePath = [themeBundle pathForResource: fileName ofType: type];
307 |
308 | if (filePath == nil) {
309 | NSFileManager *fileManger = [NSFileManager defaultManager];
310 | NSString *themePath = self.themeList[themeName];
311 | NSString *tmpPath = [themePath stringByAppendingPathComponent:name];
312 | if ([fileManger fileExistsAtPath:tmpPath]) {
313 | filePath = tmpPath;
314 | }
315 | else {
316 | NSString *baseTheme = self.themeRelationship[themeName];
317 | filePath = [self filePathForFileName:name ofType:type forTheme:baseTheme];
318 | }
319 | }
320 |
321 | if (filePath == nil) {
322 | NSBundle* bundle = [NSBundle mainBundle];
323 | filePath = [bundle pathForResource: fileName ofType: type];
324 | }
325 |
326 | return filePath;
327 | }
328 |
329 | - (BOOL)isValidString:(NSString *)str
330 | {
331 | if (str && [str isKindOfClass:[NSString class]] && [str length] > 0) {
332 | return YES;
333 | }
334 |
335 | return NO;
336 | }
337 |
338 | @end
339 |
--------------------------------------------------------------------------------
/ThemeManagerDemo/ThemeManagerDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | archiveVersion
6 | 1
7 | classes
8 |
9 | objectVersion
10 | 46
11 | objects
12 |
13 | 0479A2E21AB0385E00E544E6
14 |
15 | isa
16 | PBXFileReference
17 | lastKnownFileType
18 | wrapper.plug-in
19 | path
20 | Sample.bundle
21 | sourceTree
22 | <group>
23 |
24 | 0479A2E31AB0385E00E544E6
25 |
26 | fileRef
27 | 0479A2E21AB0385E00E544E6
28 | isa
29 | PBXBuildFile
30 |
31 | 0479A2E41AB05A4A00E544E6
32 |
33 | isa
34 | PBXFileReference
35 | lastKnownFileType
36 | wrapper.plug-in
37 | path
38 | BaseSample.bundle
39 | sourceTree
40 | <group>
41 |
42 | 0479A2E51AB05A4A00E544E6
43 |
44 | fileRef
45 | 0479A2E41AB05A4A00E544E6
46 | isa
47 | PBXBuildFile
48 |
49 | 0C6A0A2B0BBC94DB6BF60CBB
50 |
51 | fileRef
52 | D74E25516BA6C301B92A1402
53 | isa
54 | PBXBuildFile
55 |
56 | 24CCB6C0B831BC7D9AE27724
57 |
58 | buildActionMask
59 | 2147483647
60 | files
61 |
62 | inputPaths
63 |
64 | isa
65 | PBXShellScriptBuildPhase
66 | name
67 | Embed Pods Frameworks
68 | outputPaths
69 |
70 | runOnlyForDeploymentPostprocessing
71 | 0
72 | shellPath
73 | /bin/sh
74 | shellScript
75 | "${SRCROOT}/Pods/Target Support Files/Pods-ThemeManagerDemo/Pods-ThemeManagerDemo-frameworks.sh"
76 |
77 | showEnvVarsInLog
78 | 0
79 |
80 | 45B7F622E5CC76B692F99198
81 |
82 | includeInIndex
83 | 1
84 | isa
85 | PBXFileReference
86 | lastKnownFileType
87 | text.xcconfig
88 | name
89 | Pods-ThemeManagerDemo.debug.xcconfig
90 | path
91 | Pods/Target Support Files/Pods-ThemeManagerDemo/Pods-ThemeManagerDemo.debug.xcconfig
92 | sourceTree
93 | <group>
94 |
95 | 5B7A2614D002E69FDF50858F
96 |
97 | children
98 |
99 | 45B7F622E5CC76B692F99198
100 | 6821233702A5B8AB62058C9B
101 |
102 | isa
103 | PBXGroup
104 | name
105 | Pods
106 | sourceTree
107 | <group>
108 |
109 | 6821233702A5B8AB62058C9B
110 |
111 | includeInIndex
112 | 1
113 | isa
114 | PBXFileReference
115 | lastKnownFileType
116 | text.xcconfig
117 | name
118 | Pods-ThemeManagerDemo.release.xcconfig
119 | path
120 | Pods/Target Support Files/Pods-ThemeManagerDemo/Pods-ThemeManagerDemo.release.xcconfig
121 | sourceTree
122 | <group>
123 |
124 | 9EB3368C19F01C2600C82FD3
125 |
126 | children
127 |
128 | 9EB336BE19F01C4900C82FD3
129 | 9EB3369719F01C2600C82FD3
130 | 9EB336B119F01C2600C82FD3
131 | B5410E9E1C853236006203C9
132 | 9EB3369619F01C2600C82FD3
133 | 5B7A2614D002E69FDF50858F
134 | EF6E6805B458CC78A51D876D
135 |
136 | isa
137 | PBXGroup
138 | sourceTree
139 | <group>
140 |
141 | 9EB3368D19F01C2600C82FD3
142 |
143 | attributes
144 |
145 | LastUpgradeCheck
146 | 0600
147 | ORGANIZATIONNAME
148 | AppWill
149 | TargetAttributes
150 |
151 | 9EB3369419F01C2600C82FD3
152 |
153 | CreatedOnToolsVersion
154 | 6.0.1
155 |
156 | 9EB336AD19F01C2600C82FD3
157 |
158 | CreatedOnToolsVersion
159 | 6.0.1
160 | TestTargetID
161 | 9EB3369419F01C2600C82FD3
162 |
163 | B5410E9C1C853236006203C9
164 |
165 | CreatedOnToolsVersion
166 | 7.2
167 |
168 |
169 |
170 | buildConfigurationList
171 | 9EB3369019F01C2600C82FD3
172 | compatibilityVersion
173 | Xcode 3.2
174 | developmentRegion
175 | English
176 | hasScannedForEncodings
177 | 0
178 | isa
179 | PBXProject
180 | knownRegions
181 |
182 | en
183 | Base
184 |
185 | mainGroup
186 | 9EB3368C19F01C2600C82FD3
187 | productRefGroup
188 | 9EB3369619F01C2600C82FD3
189 | projectDirPath
190 |
191 | projectReferences
192 |
193 | projectRoot
194 |
195 | targets
196 |
197 | 9EB3369419F01C2600C82FD3
198 | 9EB336AD19F01C2600C82FD3
199 | B5410E9C1C853236006203C9
200 |
201 |
202 | 9EB3369019F01C2600C82FD3
203 |
204 | buildConfigurations
205 |
206 | 9EB336B619F01C2600C82FD3
207 | 9EB336B719F01C2600C82FD3
208 |
209 | defaultConfigurationIsVisible
210 | 0
211 | defaultConfigurationName
212 | Release
213 | isa
214 | XCConfigurationList
215 |
216 | 9EB3369119F01C2600C82FD3
217 |
218 | buildActionMask
219 | 2147483647
220 | files
221 |
222 | 9EB336A119F01C2600C82FD3
223 | 9EB3369E19F01C2600C82FD3
224 | 9EB336C119F01CAC00C82FD3
225 | 9EB3369B19F01C2600C82FD3
226 |
227 | isa
228 | PBXSourcesBuildPhase
229 | runOnlyForDeploymentPostprocessing
230 | 0
231 |
232 | 9EB3369219F01C2600C82FD3
233 |
234 | buildActionMask
235 | 2147483647
236 | files
237 |
238 | 0C6A0A2B0BBC94DB6BF60CBB
239 |
240 | isa
241 | PBXFrameworksBuildPhase
242 | runOnlyForDeploymentPostprocessing
243 | 0
244 |
245 | 9EB3369319F01C2600C82FD3
246 |
247 | buildActionMask
248 | 2147483647
249 | files
250 |
251 | B5410EAC1C85358F006203C9
252 | 9EB336A419F01C2600C82FD3
253 | 0479A2E51AB05A4A00E544E6
254 | 9EB336A919F01C2600C82FD3
255 | 9EB336A619F01C2600C82FD3
256 | 0479A2E31AB0385E00E544E6
257 |
258 | isa
259 | PBXResourcesBuildPhase
260 | runOnlyForDeploymentPostprocessing
261 | 0
262 |
263 | 9EB3369419F01C2600C82FD3
264 |
265 | buildConfigurationList
266 | 9EB336B819F01C2600C82FD3
267 | buildPhases
268 |
269 | EAA685EF40B6F6BC66269731
270 | 9EB3369119F01C2600C82FD3
271 | 9EB3369219F01C2600C82FD3
272 | 9EB3369319F01C2600C82FD3
273 | 24CCB6C0B831BC7D9AE27724
274 | E56CEA6CE4091A2283607CF8
275 |
276 | buildRules
277 |
278 | dependencies
279 |
280 | B5410EAB1C853581006203C9
281 |
282 | isa
283 | PBXNativeTarget
284 | name
285 | ThemeManagerDemo
286 | productName
287 | ThemeManagerDemo
288 | productReference
289 | 9EB3369519F01C2600C82FD3
290 | productType
291 | com.apple.product-type.application
292 |
293 | 9EB3369519F01C2600C82FD3
294 |
295 | explicitFileType
296 | wrapper.application
297 | includeInIndex
298 | 0
299 | isa
300 | PBXFileReference
301 | path
302 | ThemeManagerDemo.app
303 | sourceTree
304 | BUILT_PRODUCTS_DIR
305 |
306 | 9EB3369619F01C2600C82FD3
307 |
308 | children
309 |
310 | 9EB3369519F01C2600C82FD3
311 | 9EB336AE19F01C2600C82FD3
312 | B5410E9D1C853236006203C9
313 |
314 | isa
315 | PBXGroup
316 | name
317 | Products
318 | sourceTree
319 | <group>
320 |
321 | 9EB3369719F01C2600C82FD3
322 |
323 | children
324 |
325 | B5410EA71C853415006203C9
326 | 0479A2E41AB05A4A00E544E6
327 | 0479A2E21AB0385E00E544E6
328 | 9EB3369C19F01C2600C82FD3
329 | 9EB3369D19F01C2600C82FD3
330 | 9EB3369F19F01C2600C82FD3
331 | 9EB336A019F01C2600C82FD3
332 | 9EB336A219F01C2600C82FD3
333 | 9EB336A519F01C2600C82FD3
334 | 9EB336A719F01C2600C82FD3
335 | 9EB3369819F01C2600C82FD3
336 |
337 | isa
338 | PBXGroup
339 | path
340 | ThemeManagerDemo
341 | sourceTree
342 | <group>
343 |
344 | 9EB3369819F01C2600C82FD3
345 |
346 | children
347 |
348 | 9EB3369919F01C2600C82FD3
349 | 9EB3369A19F01C2600C82FD3
350 |
351 | isa
352 | PBXGroup
353 | name
354 | Supporting Files
355 | sourceTree
356 | <group>
357 |
358 | 9EB3369919F01C2600C82FD3
359 |
360 | isa
361 | PBXFileReference
362 | lastKnownFileType
363 | text.plist.xml
364 | path
365 | Info.plist
366 | sourceTree
367 | <group>
368 |
369 | 9EB3369A19F01C2600C82FD3
370 |
371 | isa
372 | PBXFileReference
373 | lastKnownFileType
374 | sourcecode.c.objc
375 | path
376 | main.m
377 | sourceTree
378 | <group>
379 |
380 | 9EB3369B19F01C2600C82FD3
381 |
382 | fileRef
383 | 9EB3369A19F01C2600C82FD3
384 | isa
385 | PBXBuildFile
386 |
387 | 9EB3369C19F01C2600C82FD3
388 |
389 | isa
390 | PBXFileReference
391 | lastKnownFileType
392 | sourcecode.c.h
393 | path
394 | AppDelegate.h
395 | sourceTree
396 | <group>
397 |
398 | 9EB3369D19F01C2600C82FD3
399 |
400 | isa
401 | PBXFileReference
402 | lastKnownFileType
403 | sourcecode.c.objc
404 | path
405 | AppDelegate.m
406 | sourceTree
407 | <group>
408 |
409 | 9EB3369E19F01C2600C82FD3
410 |
411 | fileRef
412 | 9EB3369D19F01C2600C82FD3
413 | isa
414 | PBXBuildFile
415 |
416 | 9EB3369F19F01C2600C82FD3
417 |
418 | isa
419 | PBXFileReference
420 | lastKnownFileType
421 | sourcecode.c.h
422 | path
423 | ViewController.h
424 | sourceTree
425 | <group>
426 |
427 | 9EB336A019F01C2600C82FD3
428 |
429 | isa
430 | PBXFileReference
431 | lastKnownFileType
432 | sourcecode.c.objc
433 | path
434 | ViewController.m
435 | sourceTree
436 | <group>
437 |
438 | 9EB336A119F01C2600C82FD3
439 |
440 | fileRef
441 | 9EB336A019F01C2600C82FD3
442 | isa
443 | PBXBuildFile
444 |
445 | 9EB336A219F01C2600C82FD3
446 |
447 | children
448 |
449 | 9EB336A319F01C2600C82FD3
450 |
451 | isa
452 | PBXVariantGroup
453 | name
454 | Main.storyboard
455 | sourceTree
456 | <group>
457 |
458 | 9EB336A319F01C2600C82FD3
459 |
460 | isa
461 | PBXFileReference
462 | lastKnownFileType
463 | file.storyboard
464 | name
465 | Base
466 | path
467 | Base.lproj/Main.storyboard
468 | sourceTree
469 | <group>
470 |
471 | 9EB336A419F01C2600C82FD3
472 |
473 | fileRef
474 | 9EB336A219F01C2600C82FD3
475 | isa
476 | PBXBuildFile
477 |
478 | 9EB336A519F01C2600C82FD3
479 |
480 | isa
481 | PBXFileReference
482 | lastKnownFileType
483 | folder.assetcatalog
484 | path
485 | Images.xcassets
486 | sourceTree
487 | <group>
488 |
489 | 9EB336A619F01C2600C82FD3
490 |
491 | fileRef
492 | 9EB336A519F01C2600C82FD3
493 | isa
494 | PBXBuildFile
495 |
496 | 9EB336A719F01C2600C82FD3
497 |
498 | children
499 |
500 | 9EB336A819F01C2600C82FD3
501 |
502 | isa
503 | PBXVariantGroup
504 | name
505 | LaunchScreen.xib
506 | sourceTree
507 | <group>
508 |
509 | 9EB336A819F01C2600C82FD3
510 |
511 | isa
512 | PBXFileReference
513 | lastKnownFileType
514 | file.xib
515 | name
516 | Base
517 | path
518 | Base.lproj/LaunchScreen.xib
519 | sourceTree
520 | <group>
521 |
522 | 9EB336A919F01C2600C82FD3
523 |
524 | fileRef
525 | 9EB336A719F01C2600C82FD3
526 | isa
527 | PBXBuildFile
528 |
529 | 9EB336AA19F01C2600C82FD3
530 |
531 | buildActionMask
532 | 2147483647
533 | files
534 |
535 | 9EB336B519F01C2600C82FD3
536 |
537 | isa
538 | PBXSourcesBuildPhase
539 | runOnlyForDeploymentPostprocessing
540 | 0
541 |
542 | 9EB336AB19F01C2600C82FD3
543 |
544 | buildActionMask
545 | 2147483647
546 | files
547 |
548 | isa
549 | PBXFrameworksBuildPhase
550 | runOnlyForDeploymentPostprocessing
551 | 0
552 |
553 | 9EB336AC19F01C2600C82FD3
554 |
555 | buildActionMask
556 | 2147483647
557 | files
558 |
559 | isa
560 | PBXResourcesBuildPhase
561 | runOnlyForDeploymentPostprocessing
562 | 0
563 |
564 | 9EB336AD19F01C2600C82FD3
565 |
566 | buildConfigurationList
567 | 9EB336BB19F01C2600C82FD3
568 | buildPhases
569 |
570 | 9EB336AA19F01C2600C82FD3
571 | 9EB336AB19F01C2600C82FD3
572 | 9EB336AC19F01C2600C82FD3
573 |
574 | buildRules
575 |
576 | dependencies
577 |
578 | 9EB336B019F01C2600C82FD3
579 |
580 | isa
581 | PBXNativeTarget
582 | name
583 | ThemeManagerDemoTests
584 | productName
585 | ThemeManagerDemoTests
586 | productReference
587 | 9EB336AE19F01C2600C82FD3
588 | productType
589 | com.apple.product-type.bundle.unit-test
590 |
591 | 9EB336AE19F01C2600C82FD3
592 |
593 | explicitFileType
594 | wrapper.cfbundle
595 | includeInIndex
596 | 0
597 | isa
598 | PBXFileReference
599 | path
600 | ThemeManagerDemoTests.xctest
601 | sourceTree
602 | BUILT_PRODUCTS_DIR
603 |
604 | 9EB336AF19F01C2600C82FD3
605 |
606 | containerPortal
607 | 9EB3368D19F01C2600C82FD3
608 | isa
609 | PBXContainerItemProxy
610 | proxyType
611 | 1
612 | remoteGlobalIDString
613 | 9EB3369419F01C2600C82FD3
614 | remoteInfo
615 | ThemeManagerDemo
616 |
617 | 9EB336B019F01C2600C82FD3
618 |
619 | isa
620 | PBXTargetDependency
621 | target
622 | 9EB3369419F01C2600C82FD3
623 | targetProxy
624 | 9EB336AF19F01C2600C82FD3
625 |
626 | 9EB336B119F01C2600C82FD3
627 |
628 | children
629 |
630 | 9EB336B419F01C2600C82FD3
631 | 9EB336B219F01C2600C82FD3
632 |
633 | isa
634 | PBXGroup
635 | path
636 | ThemeManagerDemoTests
637 | sourceTree
638 | <group>
639 |
640 | 9EB336B219F01C2600C82FD3
641 |
642 | children
643 |
644 | 9EB336B319F01C2600C82FD3
645 |
646 | isa
647 | PBXGroup
648 | name
649 | Supporting Files
650 | sourceTree
651 | <group>
652 |
653 | 9EB336B319F01C2600C82FD3
654 |
655 | isa
656 | PBXFileReference
657 | lastKnownFileType
658 | text.plist.xml
659 | path
660 | Info.plist
661 | sourceTree
662 | <group>
663 |
664 | 9EB336B419F01C2600C82FD3
665 |
666 | isa
667 | PBXFileReference
668 | lastKnownFileType
669 | sourcecode.c.objc
670 | path
671 | ThemeManagerDemoTests.m
672 | sourceTree
673 | <group>
674 |
675 | 9EB336B519F01C2600C82FD3
676 |
677 | fileRef
678 | 9EB336B419F01C2600C82FD3
679 | isa
680 | PBXBuildFile
681 |
682 | 9EB336B619F01C2600C82FD3
683 |
684 | buildSettings
685 |
686 | ALWAYS_SEARCH_USER_PATHS
687 | NO
688 | CLANG_CXX_LANGUAGE_STANDARD
689 | gnu++0x
690 | CLANG_CXX_LIBRARY
691 | libc++
692 | CLANG_ENABLE_MODULES
693 | YES
694 | CLANG_ENABLE_OBJC_ARC
695 | YES
696 | CLANG_WARN_BOOL_CONVERSION
697 | YES
698 | CLANG_WARN_CONSTANT_CONVERSION
699 | YES
700 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE
701 | YES_ERROR
702 | CLANG_WARN_EMPTY_BODY
703 | YES
704 | CLANG_WARN_ENUM_CONVERSION
705 | YES
706 | CLANG_WARN_INT_CONVERSION
707 | YES
708 | CLANG_WARN_OBJC_ROOT_CLASS
709 | YES_ERROR
710 | CLANG_WARN_UNREACHABLE_CODE
711 | YES
712 | CLANG_WARN__DUPLICATE_METHOD_MATCH
713 | YES
714 | CODE_SIGN_IDENTITY[sdk=iphoneos*]
715 | iPhone Developer
716 | COPY_PHASE_STRIP
717 | NO
718 | ENABLE_STRICT_OBJC_MSGSEND
719 | YES
720 | GCC_C_LANGUAGE_STANDARD
721 | gnu99
722 | GCC_DYNAMIC_NO_PIC
723 | NO
724 | GCC_OPTIMIZATION_LEVEL
725 | 0
726 | GCC_PREPROCESSOR_DEFINITIONS
727 |
728 | DEBUG=1
729 | $(inherited)
730 |
731 | GCC_SYMBOLS_PRIVATE_EXTERN
732 | NO
733 | GCC_WARN_64_TO_32_BIT_CONVERSION
734 | YES
735 | GCC_WARN_ABOUT_RETURN_TYPE
736 | YES_ERROR
737 | GCC_WARN_UNDECLARED_SELECTOR
738 | YES
739 | GCC_WARN_UNINITIALIZED_AUTOS
740 | YES_AGGRESSIVE
741 | GCC_WARN_UNUSED_FUNCTION
742 | YES
743 | GCC_WARN_UNUSED_VARIABLE
744 | YES
745 | IPHONEOS_DEPLOYMENT_TARGET
746 | 8.0
747 | MTL_ENABLE_DEBUG_INFO
748 | YES
749 | ONLY_ACTIVE_ARCH
750 | YES
751 | SDKROOT
752 | iphoneos
753 |
754 | isa
755 | XCBuildConfiguration
756 | name
757 | Debug
758 |
759 | 9EB336B719F01C2600C82FD3
760 |
761 | buildSettings
762 |
763 | ALWAYS_SEARCH_USER_PATHS
764 | NO
765 | CLANG_CXX_LANGUAGE_STANDARD
766 | gnu++0x
767 | CLANG_CXX_LIBRARY
768 | libc++
769 | CLANG_ENABLE_MODULES
770 | YES
771 | CLANG_ENABLE_OBJC_ARC
772 | YES
773 | CLANG_WARN_BOOL_CONVERSION
774 | YES
775 | CLANG_WARN_CONSTANT_CONVERSION
776 | YES
777 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE
778 | YES_ERROR
779 | CLANG_WARN_EMPTY_BODY
780 | YES
781 | CLANG_WARN_ENUM_CONVERSION
782 | YES
783 | CLANG_WARN_INT_CONVERSION
784 | YES
785 | CLANG_WARN_OBJC_ROOT_CLASS
786 | YES_ERROR
787 | CLANG_WARN_UNREACHABLE_CODE
788 | YES
789 | CLANG_WARN__DUPLICATE_METHOD_MATCH
790 | YES
791 | CODE_SIGN_IDENTITY[sdk=iphoneos*]
792 | iPhone Developer
793 | COPY_PHASE_STRIP
794 | YES
795 | ENABLE_NS_ASSERTIONS
796 | NO
797 | ENABLE_STRICT_OBJC_MSGSEND
798 | YES
799 | GCC_C_LANGUAGE_STANDARD
800 | gnu99
801 | GCC_WARN_64_TO_32_BIT_CONVERSION
802 | YES
803 | GCC_WARN_ABOUT_RETURN_TYPE
804 | YES_ERROR
805 | GCC_WARN_UNDECLARED_SELECTOR
806 | YES
807 | GCC_WARN_UNINITIALIZED_AUTOS
808 | YES_AGGRESSIVE
809 | GCC_WARN_UNUSED_FUNCTION
810 | YES
811 | GCC_WARN_UNUSED_VARIABLE
812 | YES
813 | IPHONEOS_DEPLOYMENT_TARGET
814 | 8.0
815 | MTL_ENABLE_DEBUG_INFO
816 | NO
817 | SDKROOT
818 | iphoneos
819 | VALIDATE_PRODUCT
820 | YES
821 |
822 | isa
823 | XCBuildConfiguration
824 | name
825 | Release
826 |
827 | 9EB336B819F01C2600C82FD3
828 |
829 | buildConfigurations
830 |
831 | 9EB336B919F01C2600C82FD3
832 | 9EB336BA19F01C2600C82FD3
833 |
834 | defaultConfigurationIsVisible
835 | 0
836 | defaultConfigurationName
837 | Release
838 | isa
839 | XCConfigurationList
840 |
841 | 9EB336B919F01C2600C82FD3
842 |
843 | baseConfigurationReference
844 | 45B7F622E5CC76B692F99198
845 | buildSettings
846 |
847 | ASSETCATALOG_COMPILER_APPICON_NAME
848 | AppIcon
849 | INFOPLIST_FILE
850 | ThemeManagerDemo/Info.plist
851 | IPHONEOS_DEPLOYMENT_TARGET
852 | 7.0
853 | LD_RUNPATH_SEARCH_PATHS
854 | $(inherited) @executable_path/Frameworks
855 | PRODUCT_NAME
856 | $(TARGET_NAME)
857 |
858 | isa
859 | XCBuildConfiguration
860 | name
861 | Debug
862 |
863 | 9EB336BA19F01C2600C82FD3
864 |
865 | baseConfigurationReference
866 | 6821233702A5B8AB62058C9B
867 | buildSettings
868 |
869 | ASSETCATALOG_COMPILER_APPICON_NAME
870 | AppIcon
871 | INFOPLIST_FILE
872 | ThemeManagerDemo/Info.plist
873 | IPHONEOS_DEPLOYMENT_TARGET
874 | 7.0
875 | LD_RUNPATH_SEARCH_PATHS
876 | $(inherited) @executable_path/Frameworks
877 | PRODUCT_NAME
878 | $(TARGET_NAME)
879 |
880 | isa
881 | XCBuildConfiguration
882 | name
883 | Release
884 |
885 | 9EB336BB19F01C2600C82FD3
886 |
887 | buildConfigurations
888 |
889 | 9EB336BC19F01C2600C82FD3
890 | 9EB336BD19F01C2600C82FD3
891 |
892 | defaultConfigurationIsVisible
893 | 0
894 | defaultConfigurationName
895 | Release
896 | isa
897 | XCConfigurationList
898 |
899 | 9EB336BC19F01C2600C82FD3
900 |
901 | buildSettings
902 |
903 | BUNDLE_LOADER
904 | $(TEST_HOST)
905 | FRAMEWORK_SEARCH_PATHS
906 |
907 | $(SDKROOT)/Developer/Library/Frameworks
908 | $(inherited)
909 |
910 | GCC_PREPROCESSOR_DEFINITIONS
911 |
912 | DEBUG=1
913 | $(inherited)
914 |
915 | INFOPLIST_FILE
916 | ThemeManagerDemoTests/Info.plist
917 | LD_RUNPATH_SEARCH_PATHS
918 | $(inherited) @executable_path/Frameworks @loader_path/Frameworks
919 | PRODUCT_NAME
920 | $(TARGET_NAME)
921 | TEST_HOST
922 | $(BUILT_PRODUCTS_DIR)/ThemeManagerDemo.app/ThemeManagerDemo
923 |
924 | isa
925 | XCBuildConfiguration
926 | name
927 | Debug
928 |
929 | 9EB336BD19F01C2600C82FD3
930 |
931 | buildSettings
932 |
933 | BUNDLE_LOADER
934 | $(TEST_HOST)
935 | FRAMEWORK_SEARCH_PATHS
936 |
937 | $(SDKROOT)/Developer/Library/Frameworks
938 | $(inherited)
939 |
940 | INFOPLIST_FILE
941 | ThemeManagerDemoTests/Info.plist
942 | LD_RUNPATH_SEARCH_PATHS
943 | $(inherited) @executable_path/Frameworks @loader_path/Frameworks
944 | PRODUCT_NAME
945 | $(TARGET_NAME)
946 | TEST_HOST
947 | $(BUILT_PRODUCTS_DIR)/ThemeManagerDemo.app/ThemeManagerDemo
948 |
949 | isa
950 | XCBuildConfiguration
951 | name
952 | Release
953 |
954 | 9EB336BE19F01C4900C82FD3
955 |
956 | children
957 |
958 | 9EB336BF19F01CAC00C82FD3
959 | 9EB336C019F01CAC00C82FD3
960 |
961 | isa
962 | PBXGroup
963 | name
964 | AWLThemeManager
965 | path
966 | ../AWLThemeManager
967 | sourceTree
968 | <group>
969 |
970 | 9EB336BF19F01CAC00C82FD3
971 |
972 | fileEncoding
973 | 4
974 | isa
975 | PBXFileReference
976 | lastKnownFileType
977 | sourcecode.c.h
978 | path
979 | AWLThemeManager.h
980 | sourceTree
981 | <group>
982 |
983 | 9EB336C019F01CAC00C82FD3
984 |
985 | fileEncoding
986 | 4
987 | isa
988 | PBXFileReference
989 | lastKnownFileType
990 | sourcecode.c.objc
991 | path
992 | AWLThemeManager.m
993 | sourceTree
994 | <group>
995 |
996 | 9EB336C119F01CAC00C82FD3
997 |
998 | fileRef
999 | 9EB336C019F01CAC00C82FD3
1000 | isa
1001 | PBXBuildFile
1002 |
1003 | B5410E991C853236006203C9
1004 |
1005 | buildActionMask
1006 | 2147483647
1007 | files
1008 |
1009 | isa
1010 | PBXSourcesBuildPhase
1011 | runOnlyForDeploymentPostprocessing
1012 | 0
1013 |
1014 | B5410E9A1C853236006203C9
1015 |
1016 | buildActionMask
1017 | 2147483647
1018 | files
1019 |
1020 | isa
1021 | PBXFrameworksBuildPhase
1022 | runOnlyForDeploymentPostprocessing
1023 | 0
1024 |
1025 | B5410E9B1C853236006203C9
1026 |
1027 | buildActionMask
1028 | 2147483647
1029 | files
1030 |
1031 | B5410EA91C853541006203C9
1032 | B5410EA41C853269006203C9
1033 |
1034 | isa
1035 | PBXResourcesBuildPhase
1036 | runOnlyForDeploymentPostprocessing
1037 | 0
1038 |
1039 | B5410E9C1C853236006203C9
1040 |
1041 | buildConfigurationList
1042 | B5410EA21C853236006203C9
1043 | buildPhases
1044 |
1045 | B5410E991C853236006203C9
1046 | B5410E9A1C853236006203C9
1047 | B5410E9B1C853236006203C9
1048 |
1049 | buildRules
1050 |
1051 | dependencies
1052 |
1053 | isa
1054 | PBXNativeTarget
1055 | name
1056 | Assets
1057 | productName
1058 | Assets
1059 | productReference
1060 | B5410E9D1C853236006203C9
1061 | productType
1062 | com.apple.product-type.bundle
1063 |
1064 | B5410E9D1C853236006203C9
1065 |
1066 | explicitFileType
1067 | wrapper.cfbundle
1068 | includeInIndex
1069 | 0
1070 | isa
1071 | PBXFileReference
1072 | path
1073 | Assets.bundle
1074 | sourceTree
1075 | BUILT_PRODUCTS_DIR
1076 |
1077 | B5410E9E1C853236006203C9
1078 |
1079 | children
1080 |
1081 | B5410E9F1C853236006203C9
1082 |
1083 | isa
1084 | PBXGroup
1085 | path
1086 | Assets
1087 | sourceTree
1088 | <group>
1089 |
1090 | B5410E9F1C853236006203C9
1091 |
1092 | isa
1093 | PBXFileReference
1094 | lastKnownFileType
1095 | text.plist.xml
1096 | path
1097 | Info.plist
1098 | sourceTree
1099 | <group>
1100 |
1101 | B5410EA01C853236006203C9
1102 |
1103 | buildSettings
1104 |
1105 | CODE_SIGN_IDENTITY
1106 | -
1107 | COMBINE_HIDPI_IMAGES
1108 | YES
1109 | DEBUG_INFORMATION_FORMAT
1110 | dwarf
1111 | ENABLE_TESTABILITY
1112 | YES
1113 | GCC_NO_COMMON_BLOCKS
1114 | YES
1115 | INFOPLIST_FILE
1116 | Assets/Info.plist
1117 | INSTALL_PATH
1118 | $(LOCAL_LIBRARY_DIR)/Bundles
1119 | MACOSX_DEPLOYMENT_TARGET
1120 | 10.11
1121 | PRODUCT_BUNDLE_IDENTIFIER
1122 | com.appwill.Assets
1123 | PRODUCT_NAME
1124 | $(TARGET_NAME)
1125 | SDKROOT
1126 | iphoneos
1127 | SKIP_INSTALL
1128 | YES
1129 | WRAPPER_EXTENSION
1130 | bundle
1131 |
1132 | isa
1133 | XCBuildConfiguration
1134 | name
1135 | Debug
1136 |
1137 | B5410EA11C853236006203C9
1138 |
1139 | buildSettings
1140 |
1141 | CODE_SIGN_IDENTITY
1142 | -
1143 | COMBINE_HIDPI_IMAGES
1144 | YES
1145 | COPY_PHASE_STRIP
1146 | NO
1147 | DEBUG_INFORMATION_FORMAT
1148 | dwarf-with-dsym
1149 | GCC_NO_COMMON_BLOCKS
1150 | YES
1151 | INFOPLIST_FILE
1152 | Assets/Info.plist
1153 | INSTALL_PATH
1154 | $(LOCAL_LIBRARY_DIR)/Bundles
1155 | MACOSX_DEPLOYMENT_TARGET
1156 | 10.11
1157 | PRODUCT_BUNDLE_IDENTIFIER
1158 | com.appwill.Assets
1159 | PRODUCT_NAME
1160 | $(TARGET_NAME)
1161 | SDKROOT
1162 | iphoneos
1163 | SKIP_INSTALL
1164 | YES
1165 | WRAPPER_EXTENSION
1166 | bundle
1167 |
1168 | isa
1169 | XCBuildConfiguration
1170 | name
1171 | Release
1172 |
1173 | B5410EA21C853236006203C9
1174 |
1175 | buildConfigurations
1176 |
1177 | B5410EA01C853236006203C9
1178 | B5410EA11C853236006203C9
1179 |
1180 | defaultConfigurationIsVisible
1181 | 0
1182 | isa
1183 | XCConfigurationList
1184 |
1185 | B5410EA31C853269006203C9
1186 |
1187 | isa
1188 | PBXFileReference
1189 | lastKnownFileType
1190 | folder.assetcatalog
1191 | path
1192 | Media.xcassets
1193 | sourceTree
1194 | <group>
1195 |
1196 | B5410EA41C853269006203C9
1197 |
1198 | fileRef
1199 | B5410EA31C853269006203C9
1200 | isa
1201 | PBXBuildFile
1202 |
1203 | B5410EA71C853415006203C9
1204 |
1205 | children
1206 |
1207 | B5410EA81C853541006203C9
1208 | B5410EA31C853269006203C9
1209 |
1210 | isa
1211 | PBXGroup
1212 | name
1213 | AssetsBundle
1214 | sourceTree
1215 | <group>
1216 |
1217 | B5410EA81C853541006203C9
1218 |
1219 | fileEncoding
1220 | 4
1221 | isa
1222 | PBXFileReference
1223 | lastKnownFileType
1224 | text.plist.xml
1225 | path
1226 | defaults.plist
1227 | sourceTree
1228 | <group>
1229 |
1230 | B5410EA91C853541006203C9
1231 |
1232 | fileRef
1233 | B5410EA81C853541006203C9
1234 | isa
1235 | PBXBuildFile
1236 |
1237 | B5410EAA1C853581006203C9
1238 |
1239 | containerPortal
1240 | 9EB3368D19F01C2600C82FD3
1241 | isa
1242 | PBXContainerItemProxy
1243 | proxyType
1244 | 1
1245 | remoteGlobalIDString
1246 | B5410E9C1C853236006203C9
1247 | remoteInfo
1248 | Assets
1249 |
1250 | B5410EAB1C853581006203C9
1251 |
1252 | isa
1253 | PBXTargetDependency
1254 | target
1255 | B5410E9C1C853236006203C9
1256 | targetProxy
1257 | B5410EAA1C853581006203C9
1258 |
1259 | B5410EAC1C85358F006203C9
1260 |
1261 | fileRef
1262 | B5410E9D1C853236006203C9
1263 | isa
1264 | PBXBuildFile
1265 |
1266 | D74E25516BA6C301B92A1402
1267 |
1268 | explicitFileType
1269 | archive.ar
1270 | includeInIndex
1271 | 0
1272 | isa
1273 | PBXFileReference
1274 | path
1275 | libPods-ThemeManagerDemo.a
1276 | sourceTree
1277 | BUILT_PRODUCTS_DIR
1278 |
1279 | E56CEA6CE4091A2283607CF8
1280 |
1281 | buildActionMask
1282 | 2147483647
1283 | files
1284 |
1285 | inputPaths
1286 |
1287 | isa
1288 | PBXShellScriptBuildPhase
1289 | name
1290 | Copy Pods Resources
1291 | outputPaths
1292 |
1293 | runOnlyForDeploymentPostprocessing
1294 | 0
1295 | shellPath
1296 | /bin/sh
1297 | shellScript
1298 | "${SRCROOT}/Pods/Target Support Files/Pods-ThemeManagerDemo/Pods-ThemeManagerDemo-resources.sh"
1299 |
1300 | showEnvVarsInLog
1301 | 0
1302 |
1303 | EAA685EF40B6F6BC66269731
1304 |
1305 | buildActionMask
1306 | 2147483647
1307 | files
1308 |
1309 | inputPaths
1310 |
1311 | isa
1312 | PBXShellScriptBuildPhase
1313 | name
1314 | Check Pods Manifest.lock
1315 | outputPaths
1316 |
1317 | runOnlyForDeploymentPostprocessing
1318 | 0
1319 | shellPath
1320 | /bin/sh
1321 | shellScript
1322 | diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
1323 | if [[ $? != 0 ]] ; then
1324 | cat << EOM
1325 | error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
1326 | EOM
1327 | exit 1
1328 | fi
1329 |
1330 | showEnvVarsInLog
1331 | 0
1332 |
1333 | EF6E6805B458CC78A51D876D
1334 |
1335 | children
1336 |
1337 | D74E25516BA6C301B92A1402
1338 |
1339 | isa
1340 | PBXGroup
1341 | name
1342 | Frameworks
1343 | sourceTree
1344 | <group>
1345 |
1346 |
1347 | rootObject
1348 | 9EB3368D19F01C2600C82FD3
1349 |
1350 |
1351 |
--------------------------------------------------------------------------------