Browse Source

版本升级维护

yyqxiaoyin 5 years ago
parent
commit
6f6b53f132
46 changed files with 1548 additions and 50 deletions
  1. 5 0
      Example/MKRRadioManager/MKRRadioManager-Info.plist
  2. 20 7
      Example/MKRRadioManager/MKRViewController.m
  3. 1 0
      Example/Podfile
  4. 8 1
      Example/Podfile.lock
  5. 1 0
      Example/Pods/Headers/Private/YYCategory/NSObject+AssociatedObject.h
  6. 1 0
      Example/Pods/Headers/Private/YYCategory/NSString+ChineseLength.h
  7. 1 0
      Example/Pods/Headers/Private/YYCategory/NSString+Utilities.h
  8. 1 0
      Example/Pods/Headers/Private/YYCategory/UIDevice+Helpers.h
  9. 1 0
      Example/Pods/Headers/Private/YYCategory/UIImage+Stretch.h
  10. 1 0
      Example/Pods/Headers/Private/YYCategory/UIView+Sizes.h
  11. 1 0
      Example/Pods/Headers/Private/YYCategory/UIView+ViewController.h
  12. 1 0
      Example/Pods/Headers/Public/YYCategory/NSObject+AssociatedObject.h
  13. 1 0
      Example/Pods/Headers/Public/YYCategory/NSString+ChineseLength.h
  14. 1 0
      Example/Pods/Headers/Public/YYCategory/NSString+Utilities.h
  15. 1 0
      Example/Pods/Headers/Public/YYCategory/UIDevice+Helpers.h
  16. 1 0
      Example/Pods/Headers/Public/YYCategory/UIImage+Stretch.h
  17. 1 0
      Example/Pods/Headers/Public/YYCategory/UIView+Sizes.h
  18. 1 0
      Example/Pods/Headers/Public/YYCategory/UIView+ViewController.h
  19. 8 1
      Example/Pods/Manifest.lock
  20. 232 31
      Example/Pods/Pods.xcodeproj/project.pbxproj
  21. 25 0
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example-acknowledgements.markdown
  22. 31 0
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example-acknowledgements.plist
  23. 4 4
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example.debug.xcconfig
  24. 4 4
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example.release.xcconfig
  25. 1 1
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Tests/Pods-MKRRadioManager_Tests.debug.xcconfig
  26. 1 1
      Example/Pods/Target Support Files/Pods-MKRRadioManager_Tests/Pods-MKRRadioManager_Tests.release.xcconfig
  27. 5 0
      Example/Pods/Target Support Files/YYCategory/YYCategory-dummy.m
  28. 12 0
      Example/Pods/Target Support Files/YYCategory/YYCategory-prefix.pch
  29. 9 0
      Example/Pods/Target Support Files/YYCategory/YYCategory.xcconfig
  30. 21 0
      Example/Pods/YYCategory/LICENSE
  31. 2 0
      Example/Pods/YYCategory/README.md
  32. 14 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.h
  33. 22 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.m
  34. 40 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.h
  35. 53 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.m
  36. 16 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.h
  37. 55 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.m
  38. 33 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.h
  39. 251 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.m
  40. 51 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.h
  41. 92 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.m
  42. 140 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.h
  43. 326 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.m
  44. 18 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.h
  45. 33 0
      Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.m
  46. 1 0
      MKRRadioManager/Classes/MKRRadioManager/MKRAVPlayer/MKRAVPlayer.m

+ 5 - 0
Example/MKRRadioManager/MKRRadioManager-Info.plist

@@ -38,6 +38,11 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
 	</array>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
 	<key>UISupportedInterfaceOrientations~ipad</key>
 	<key>UISupportedInterfaceOrientations~ipad</key>
 	<array>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
 		<string>UIInterfaceOrientationPortrait</string>

+ 20 - 7
Example/MKRRadioManager/MKRViewController.m

@@ -8,6 +8,8 @@
 
 
 #import "MKRViewController.h"
 #import "MKRViewController.h"
 #import "MKRPlayControlViewController.h"
 #import "MKRPlayControlViewController.h"
+#import <MKRRadioManager/MKRAVPlayer.h>
+#import <YYCategory/NSString+Utilities.h>
 
 
 @interface MKRViewController ()
 @interface MKRViewController ()
 
 
@@ -15,6 +17,8 @@
 
 
 @property (nonatomic, strong)NSMutableArray *dataSource;
 @property (nonatomic, strong)NSMutableArray *dataSource;
 
 
+@property (nonatomic, strong) MKRAVPlayer *player;
+
 @end
 @end
 
 
 @implementation MKRViewController
 @implementation MKRViewController
@@ -33,13 +37,22 @@
 - (void)viewDidLoad
 - (void)viewDidLoad
 {
 {
     [super viewDidLoad];
     [super viewDidLoad];
-    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
-    self.tableView.delegate = self;
-    self.tableView.dataSource = self;
-    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
-    [self.view addSubview:self.tableView];
-    [[MKRWIFIDeviceManager shareManager] startUpnp];
-    [self searchDevice];
+//    http://openod.sign.qingting.fm/mp3/3235228_128.mp3?sign=47d740e207069a86c539d2c78528f9c2&t=5d8d2d55&clientID=OTRmNmQyZDgtNWZiMi0xMWU3LTkyM2YtMDAxNjNlMDAyMGFk
+    NSString *urlString = [@"http://radio1964-zhibo.oss-cn-shenzhen.aliyuncs.com/audio_data/180112/榜单bandcamp第一期20181月12.mp3" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
+    NSString *string1 = [@"http://openod.sign.qingting.fm/mp3/3235228_128.mp3?sign=47d740e207069a86c539d2c78528f9c2&t=5d8d2d55&clientID=OTRmNmQyZDgtNWZiMi0xMWU3LTkyM2YtMDAxNjNlMDAyMGFk" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
+//    NSString *realString = [[urlString urlEncodeString] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
+    NSURL *url = [NSURL URLWithString:string1];
+    
+    self.player = [[MKRAVPlayer alloc]initWithContentURL:url];
+    self.player.shouldAutoPlay = YES;
+    [self.player play];
+//    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
+//    self.tableView.delegate = self;
+//    self.tableView.dataSource = self;
+//    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
+//    [self.view addSubview:self.tableView];
+//    [[MKRWIFIDeviceManager shareManager] startUpnp];
+//    [self searchDevice];
 }
 }
 
 
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

+ 1 - 0
Example/Podfile

@@ -4,6 +4,7 @@ platform :ios, '9.2'
 inhibit_all_warnings!
 inhibit_all_warnings!
 target 'MKRRadioManager_Example' do
 target 'MKRRadioManager_Example' do
   pod 'MKRRadioManager', :path => '../'
   pod 'MKRRadioManager', :path => '../'
+  pod 'YYCategory'
   target 'MKRRadioManager_Tests' do
   target 'MKRRadioManager_Tests' do
     inherit! :search_paths
     inherit! :search_paths
   end
   end

+ 8 - 1
Example/Podfile.lock

@@ -1,8 +1,14 @@
 PODS:
 PODS:
   - MKRRadioManager (0.0.1)
   - MKRRadioManager (0.0.1)
+  - YYCategory (0.0.1)
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - MKRRadioManager (from `../`)
   - MKRRadioManager (from `../`)
+  - YYCategory
+
+SPEC REPOS:
+  https://github.com/cocoapods/specs.git:
+    - YYCategory
 
 
 EXTERNAL SOURCES:
 EXTERNAL SOURCES:
   MKRRadioManager:
   MKRRadioManager:
@@ -10,7 +16,8 @@ EXTERNAL SOURCES:
 
 
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   MKRRadioManager: dc051d4b5361a49c481dc08d28eaf07fa1c1084c
   MKRRadioManager: dc051d4b5361a49c481dc08d28eaf07fa1c1084c
+  YYCategory: d85135b05d2806c90930a5bbadfc1501396a3db9
 
 
-PODFILE CHECKSUM: f3923d99a7dd4bfbbb1643a013536f7777f9d494
+PODFILE CHECKSUM: f65396e8a7f07654404054ab9d38dc4b7b6f8818
 
 
 COCOAPODS: 1.7.5
 COCOAPODS: 1.7.5

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/NSObject+AssociatedObject.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/NSString+ChineseLength.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/NSString+Utilities.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/UIDevice+Helpers.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/UIImage+Stretch.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/UIView+Sizes.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.h

+ 1 - 0
Example/Pods/Headers/Private/YYCategory/UIView+ViewController.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/NSObject+AssociatedObject.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/NSString+ChineseLength.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/NSString+Utilities.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/UIDevice+Helpers.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/UIImage+Stretch.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/UIView+Sizes.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.h

+ 1 - 0
Example/Pods/Headers/Public/YYCategory/UIView+ViewController.h

@@ -0,0 +1 @@
+../../../YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.h

+ 8 - 1
Example/Pods/Manifest.lock

@@ -1,8 +1,14 @@
 PODS:
 PODS:
   - MKRRadioManager (0.0.1)
   - MKRRadioManager (0.0.1)
+  - YYCategory (0.0.1)
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - MKRRadioManager (from `../`)
   - MKRRadioManager (from `../`)
+  - YYCategory
+
+SPEC REPOS:
+  https://github.com/cocoapods/specs.git:
+    - YYCategory
 
 
 EXTERNAL SOURCES:
 EXTERNAL SOURCES:
   MKRRadioManager:
   MKRRadioManager:
@@ -10,7 +16,8 @@ EXTERNAL SOURCES:
 
 
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   MKRRadioManager: dc051d4b5361a49c481dc08d28eaf07fa1c1084c
   MKRRadioManager: dc051d4b5361a49c481dc08d28eaf07fa1c1084c
+  YYCategory: d85135b05d2806c90930a5bbadfc1501396a3db9
 
 
-PODFILE CHECKSUM: f3923d99a7dd4bfbbb1643a013536f7777f9d494
+PODFILE CHECKSUM: f65396e8a7f07654404054ab9d38dc4b7b6f8818
 
 
 COCOAPODS: 1.7.5
 COCOAPODS: 1.7.5

+ 232 - 31
Example/Pods/Pods.xcodeproj/project.pbxproj

@@ -7,30 +7,45 @@
 	objects = {
 	objects = {
 
 
 /* Begin PBXBuildFile section */
 /* Begin PBXBuildFile section */
+		05EDC679BECE92D3A77A8E321D79DF90 /* UIView+ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 539C326717A3053BB71CD867536DC66D /* UIView+ViewController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		0752174CC9F1F4113A6210CBB5FC7A4C /* MKRPlayResourceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		0752174CC9F1F4113A6210CBB5FC7A4C /* MKRPlayResourceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		0AA49A5335B50B43438DEB82BE67541E /* NSObject+AssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 524DF209E803993F2EED562FB58E4BC0 /* NSObject+AssociatedObject.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		0F6E23F3DBCECE9F29D7DD4F680682AD /* MKRAVPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		0F6E23F3DBCECE9F29D7DD4F680682AD /* MKRAVPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		10398C5F92AA80197639284CFECDBE99 /* MKRRadioPlayControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		10398C5F92AA80197639284CFECDBE99 /* MKRRadioPlayControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		11F7FF31466FB609821E6C4F77FC7236 /* UIDevice+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		11F7FF31466FB609821E6C4F77FC7236 /* UIDevice+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		1A8323CF539CBCCADBBB73D5CA7E1105 /* MKRM3UListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		1A8323CF539CBCCADBBB73D5CA7E1105 /* MKRM3UListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		292CB70D81DC98F1018724C91F561BDF /* NSString+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		292CB70D81DC98F1018724C91F561BDF /* NSString+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		3DB4BAE2832649B2DAE7700DEC6C78F0 /* NSString+ChineseLength.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D5A3A65BD4499F1E9584AAFEE4AAD59 /* NSString+ChineseLength.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		3E23680680DCE587CF61556E57629E68 /* MKRRadioResorce.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		3E23680680DCE587CF61556E57629E68 /* MKRRadioResorce.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		45DA105594C15A9F9152CB6BB3F97FDA /* MKRAVPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 079DC5A4E08F53E591F236C06C06D758 /* MKRAVPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		45DA105594C15A9F9152CB6BB3F97FDA /* MKRAVPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 079DC5A4E08F53E591F236C06C06D758 /* MKRAVPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		51C9B21F896349CA28C9E335791E9F06 /* MKRPlayControlProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 883013C7C5BB118683BBD20144861EBF /* MKRPlayControlProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		51C9B21F896349CA28C9E335791E9F06 /* MKRPlayControlProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 883013C7C5BB118683BBD20144861EBF /* MKRPlayControlProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		5566C60F36F8B80C6C538E18255122F9 /* Pods-MKRRadioManager_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */; };
 		5B772CFA77D3DEF9BF8E1E660A40B27C /* Pods-MKRRadioManager_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */; };
 		5B772CFA77D3DEF9BF8E1E660A40B27C /* Pods-MKRRadioManager_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */; };
 		6BA4D3D198020D9B811A41599311D164 /* NSHashTable+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 073733C90A82FC2B771BEC007FE83B66 /* NSHashTable+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		6BA4D3D198020D9B811A41599311D164 /* NSHashTable+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 073733C90A82FC2B771BEC007FE83B66 /* NSHashTable+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		8101E2571829444DB7DD53A4F747504A /* MKRRadioResorce.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		8101E2571829444DB7DD53A4F747504A /* MKRRadioResorce.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		81CCE14F2B0B2A696EBEF16CFC53D662 /* MKRWIFIDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		81CCE14F2B0B2A696EBEF16CFC53D662 /* MKRWIFIDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		92E01E9BD33817D849DE6280771C9BA9 /* Pods-MKRRadioManager_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */; };
+		8BB2EF656E3E4F6C17E3FE5DDE644157 /* UIView+Sizes.m in Sources */ = {isa = PBXBuildFile; fileRef = CCE35E93200703AD92B0BFD4429DE9A4 /* UIView+Sizes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		93CDA092DA400222FEDAE2639F1F6461 /* UIView+Sizes.h in Headers */ = {isa = PBXBuildFile; fileRef = DC83EFB065E5B8CE8430E9F2212DD3ED /* UIView+Sizes.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		95188B67A10D8A8E1BD71B3EC5E03401 /* NSObject+AssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D382B31C3779DD7D81BD328088C2F0A7 /* NSObject+AssociatedObject.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		957D07DADE29AC5383A56283783C1607 /* UIDevice+Helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D351385C24DA2D7D0D3DDF24118D31 /* UIDevice+Helpers.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		A5263DC946CA5202BCCD3DC132671E45 /* MKRResoureEnumHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		A5263DC946CA5202BCCD3DC132671E45 /* MKRResoureEnumHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		B60522713DDDE3CD23792F11F716F20E /* MKRPlayResourceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		B60522713DDDE3CD23792F11F716F20E /* MKRPlayResourceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		C0A5986288CA046BFAC0A0862E0221AD /* MKRUPnPDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		C0A5986288CA046BFAC0A0862E0221AD /* MKRUPnPDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		C351F794FC8535E194CA0CB2D4F7A799 /* NSString+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		C351F794FC8535E194CA0CB2D4F7A799 /* NSString+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		C562666F135D70BB71B1FA6E29A3CE93 /* NSString+ChineseLength.m in Sources */ = {isa = PBXBuildFile; fileRef = A3220EC80CC6195CAD3C54F1E91436DA /* NSString+ChineseLength.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		CB3964D8697546F82B3EA2C51B4D9A6F /* UIImage+Stretch.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A736529FF764EA1100F9F501828530 /* UIImage+Stretch.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		CE34E163C0B43A59CFC7F7A1F47BC59C /* UIDevice+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		CE34E163C0B43A59CFC7F7A1F47BC59C /* UIDevice+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		D55344269E8923B52473A585F6114BB2 /* NSString+Utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7844F8E449C416455F19558EE621D7D3 /* NSString+Utilities.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		D79FEF30F6ADBDEB39C96BCC063BC306 /* YYCategory-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5D9C2AF04EAB2EB9F181871A835466 /* YYCategory-dummy.m */; };
 		E05A599D4D5337CFF6FAC62D3DAB8F38 /* MKRM3UListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		E05A599D4D5337CFF6FAC62D3DAB8F38 /* MKRM3UListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		E3A4C63CA515E5EECA716CD1CCC6DF39 /* UIImage+Stretch.m in Sources */ = {isa = PBXBuildFile; fileRef = CCFB615F0269E47AA0FA76A4F096CAB4 /* UIImage+Stretch.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		E7A7E8C276DDB8D02889A5C7C625CA86 /* MKRPlayResourceUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 06B88CAEDB53D77F3109D0D93F898E44 /* MKRPlayResourceUpdateProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		E7A7E8C276DDB8D02889A5C7C625CA86 /* MKRPlayResourceUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 06B88CAEDB53D77F3109D0D93F898E44 /* MKRPlayResourceUpdateProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		EB0C5B1F5D6FC26438DDF5881D4A51E5 /* MKRWIFIDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B4508752581AF105F4698A97BDA686D /* MKRWIFIDeviceManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		EB0C5B1F5D6FC26438DDF5881D4A51E5 /* MKRWIFIDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B4508752581AF105F4698A97BDA686D /* MKRWIFIDeviceManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		EBEFFFBEC96104520379C4348BA69CA0 /* NSHashTable+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		EBEFFFBEC96104520379C4348BA69CA0 /* NSHashTable+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		EBFC9E2EE8989CCB9EC7ABEED595976B /* MKRUPnPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D2ED6AF2CB32499AA6847AA06885995 /* MKRUPnPDevice.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		EBFC9E2EE8989CCB9EC7ABEED595976B /* MKRUPnPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D2ED6AF2CB32499AA6847AA06885995 /* MKRUPnPDevice.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		F18C3CAEDFCCBD698EA8FED4833BF494 /* UIDevice+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B11A171A33527A7129184487527111 /* UIDevice+Helpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		F68891B2313721B68D8C1242F3CBEB8D /* NSString+Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D2D0633886A25A78C38FF94C6DC847 /* NSString+Utilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		FA5665C985869E54C1324F081C003426 /* UIView+ViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = C336F077938B81E0E2E5F74B5E719423 /* UIView+ViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		FDB8574CF68AB36EBD686A60AE583BA1 /* MKRRadioManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */; };
 		FDB8574CF68AB36EBD686A60AE583BA1 /* MKRRadioManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */; };
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
@@ -42,7 +57,14 @@
 			remoteGlobalIDString = 6759AE90C019F7CEBF481E7A84F59338;
 			remoteGlobalIDString = 6759AE90C019F7CEBF481E7A84F59338;
 			remoteInfo = "Pods-MKRRadioManager_Example";
 			remoteInfo = "Pods-MKRRadioManager_Example";
 		};
 		};
-		50EC0A7C3BC17F4B790E7D59E6230F1B /* PBXContainerItemProxy */ = {
+		3B2D1716598745AE18F6C801070B5273 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 7990945DFD111A8558696D76E99A29E9;
+			remoteInfo = YYCategory;
+		};
+		F9EBB43CCE6CE6F113D45B5DAB5B0B16 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			isa = PBXContainerItemProxy;
 			containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
 			containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
 			proxyType = 1;
 			proxyType = 1;
@@ -61,21 +83,29 @@
 		2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MKRRadioResorce.m; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.m; sourceTree = "<group>"; };
 		2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MKRRadioResorce.m; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.m; sourceTree = "<group>"; };
 		385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRRadioPlayControlManager.h; sourceTree = "<group>"; };
 		385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRRadioPlayControlManager.h; sourceTree = "<group>"; };
 		38CBECD3E13B6E8C07C54FD39ED9B21F /* Pods-MKRRadioManager_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Example-acknowledgements.plist"; sourceTree = "<group>"; };
 		38CBECD3E13B6E8C07C54FD39ED9B21F /* Pods-MKRRadioManager_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Example-acknowledgements.plist"; sourceTree = "<group>"; };
+		44A736529FF764EA1100F9F501828530 /* UIImage+Stretch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Stretch.h"; path = "YYCategoryDemo/YYCategory/UIImage+Stretch.h"; sourceTree = "<group>"; };
 		450D8D4FFEF0E114209CA29D1A2CE838 /* libUPNP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libUPNP.framework; path = libs/libUPNP.framework; sourceTree = "<group>"; };
 		450D8D4FFEF0E114209CA29D1A2CE838 /* libUPNP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libUPNP.framework; path = libs/libUPNP.framework; sourceTree = "<group>"; };
 		4624903CB75A92FD828681E070A96BA5 /* libMKRRadioManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMKRRadioManager.a; path = libMKRRadioManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		4624903CB75A92FD828681E070A96BA5 /* libMKRRadioManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMKRRadioManager.a; path = libMKRRadioManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		47E8ECEFE30CC53FAA5DE9059EFCCA03 /* libAS-Control.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libAS-Control.framework"; path = "libs/libAS-Control.framework"; sourceTree = "<group>"; };
 		47E8ECEFE30CC53FAA5DE9059EFCCA03 /* libAS-Control.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libAS-Control.framework"; path = "libs/libAS-Control.framework"; sourceTree = "<group>"; };
 		4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRM3UListModel.h; sourceTree = "<group>"; };
 		4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRM3UListModel.h; sourceTree = "<group>"; };
+		4D5A3A65BD4499F1E9584AAFEE4AAD59 /* NSString+ChineseLength.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+ChineseLength.h"; path = "YYCategoryDemo/YYCategory/NSString+ChineseLength.h"; sourceTree = "<group>"; };
 		4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRUPnPDevice.m; sourceTree = "<group>"; };
 		4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRUPnPDevice.m; sourceTree = "<group>"; };
 		4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRPlayResourceStatus.m; sourceTree = "<group>"; };
 		4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRPlayResourceStatus.m; sourceTree = "<group>"; };
+		524DF209E803993F2EED562FB58E4BC0 /* NSObject+AssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+AssociatedObject.m"; path = "YYCategoryDemo/YYCategory/NSObject+AssociatedObject.m"; sourceTree = "<group>"; };
 		533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
+		539C326717A3053BB71CD867536DC66D /* UIView+ViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+ViewController.m"; path = "YYCategoryDemo/YYCategory/UIView+ViewController.m"; sourceTree = "<group>"; };
 		5D5404FE9A358D93FBCF9F384ABC2AEA /* Pods-MKRRadioManager_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.release.xcconfig"; sourceTree = "<group>"; };
 		5D5404FE9A358D93FBCF9F384ABC2AEA /* Pods-MKRRadioManager_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.release.xcconfig"; sourceTree = "<group>"; };
+		62B11A171A33527A7129184487527111 /* UIDevice+Helpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIDevice+Helpers.m"; path = "YYCategoryDemo/YYCategory/UIDevice+Helpers.m"; sourceTree = "<group>"; };
+		63966E2C3A0A25AD69A7722141C15905 /* YYCategory.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYCategory.xcconfig; sourceTree = "<group>"; };
 		6606738F4C31335C6DE5483A861BF122 /* Pods-MKRRadioManager_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
 		6606738F4C31335C6DE5483A861BF122 /* Pods-MKRRadioManager_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
 		67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Tests-dummy.m"; sourceTree = "<group>"; };
 		67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Tests-dummy.m"; sourceTree = "<group>"; };
 		68899B02239354B7E74A8091314E78A1 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
 		68899B02239354B7E74A8091314E78A1 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
 		6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceStatus.h; sourceTree = "<group>"; };
 		6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceStatus.h; sourceTree = "<group>"; };
 		6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRM3UListModel.m; sourceTree = "<group>"; };
 		6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRM3UListModel.m; sourceTree = "<group>"; };
 		6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MKRRadioResorce.h; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.h; sourceTree = "<group>"; };
 		6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MKRRadioResorce.h; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.h; sourceTree = "<group>"; };
+		7844F8E449C416455F19558EE621D7D3 /* NSString+Utilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Utilities.h"; path = "YYCategoryDemo/YYCategory/NSString+Utilities.h"; sourceTree = "<group>"; };
 		8169495D23E6F2568FB3BB68CFB40D97 /* Pods-MKRRadioManager_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
 		8169495D23E6F2568FB3BB68CFB40D97 /* Pods-MKRRadioManager_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
+		818229EDFCEFE91B8410D7C9CC7E6A5D /* libYYCategory.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libYYCategory.a; path = libYYCategory.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Example-dummy.m"; sourceTree = "<group>"; };
 		836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Example-dummy.m"; sourceTree = "<group>"; };
 		838E1E2CBE39C6A523090D0FA57A4C23 /* libPods-MKRRadioManager_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MKRRadioManager_Tests.a"; path = "libPods-MKRRadioManager_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 		838E1E2CBE39C6A523090D0FA57A4C23 /* libPods-MKRRadioManager_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MKRRadioManager_Tests.a"; path = "libPods-MKRRadioManager_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 		86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MKRRadioManager-dummy.m"; sourceTree = "<group>"; };
 		86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MKRRadioManager-dummy.m"; sourceTree = "<group>"; };
@@ -86,20 +116,37 @@
 		9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRResoureEnumHeader.h; sourceTree = "<group>"; };
 		A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRResoureEnumHeader.h; sourceTree = "<group>"; };
 		A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MKRRadioManager.xcconfig; sourceTree = "<group>"; };
 		A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MKRRadioManager.xcconfig; sourceTree = "<group>"; };
+		A3220EC80CC6195CAD3C54F1E91436DA /* NSString+ChineseLength.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+ChineseLength.m"; path = "YYCategoryDemo/YYCategory/NSString+ChineseLength.m"; sourceTree = "<group>"; };
 		A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRAVPlayer.m; sourceTree = "<group>"; };
 		A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRAVPlayer.m; sourceTree = "<group>"; };
 		A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		ADD6016F3760993E4FE00B435C3A1AAE /* Pods-MKRRadioManager_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.release.xcconfig"; sourceTree = "<group>"; };
 		ADD6016F3760993E4FE00B435C3A1AAE /* Pods-MKRRadioManager_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.release.xcconfig"; sourceTree = "<group>"; };
 		B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSHashTable+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSHashTable+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
 		B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
+		BE5D9C2AF04EAB2EB9F181871A835466 /* YYCategory-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYCategory-dummy.m"; sourceTree = "<group>"; };
+		C336F077938B81E0E2E5F74B5E719423 /* UIView+ViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+ViewController.h"; path = "YYCategoryDemo/YYCategory/UIView+ViewController.h"; sourceTree = "<group>"; };
 		C4A35313AD83C01E57EA1815AEA6BC5C /* Pods-MKRRadioManager_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.debug.xcconfig"; sourceTree = "<group>"; };
 		C4A35313AD83C01E57EA1815AEA6BC5C /* Pods-MKRRadioManager_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.debug.xcconfig"; sourceTree = "<group>"; };
+		CCE35E93200703AD92B0BFD4429DE9A4 /* UIView+Sizes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Sizes.m"; path = "YYCategoryDemo/YYCategory/UIView+Sizes.m"; sourceTree = "<group>"; };
+		CCFB615F0269E47AA0FA76A4F096CAB4 /* UIImage+Stretch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Stretch.m"; path = "YYCategoryDemo/YYCategory/UIImage+Stretch.m"; sourceTree = "<group>"; };
+		D382B31C3779DD7D81BD328088C2F0A7 /* NSObject+AssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+AssociatedObject.h"; path = "YYCategoryDemo/YYCategory/NSObject+AssociatedObject.h"; sourceTree = "<group>"; };
+		DC83EFB065E5B8CE8430E9F2212DD3ED /* UIView+Sizes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Sizes.h"; path = "YYCategoryDemo/YYCategory/UIView+Sizes.h"; sourceTree = "<group>"; };
 		E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
 		E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
+		E4D351385C24DA2D7D0D3DDF24118D31 /* UIDevice+Helpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIDevice+Helpers.h"; path = "YYCategoryDemo/YYCategory/UIDevice+Helpers.h"; sourceTree = "<group>"; };
 		EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRWIFIDeviceManager.h; sourceTree = "<group>"; };
 		EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRWIFIDeviceManager.h; sourceTree = "<group>"; };
 		EFBEB724A7C46694A8AC151A929B3C28 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
 		EFBEB724A7C46694A8AC151A929B3C28 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
+		F1D2D0633886A25A78C38FF94C6DC847 /* NSString+Utilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Utilities.m"; path = "YYCategoryDemo/YYCategory/NSString+Utilities.m"; sourceTree = "<group>"; };
 		F53C1E652AFD7038B717B14F08A1A2EC /* Pods-MKRRadioManager_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
 		F53C1E652AFD7038B717B14F08A1A2EC /* Pods-MKRRadioManager_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
+		FCD8D4C014698BA623FDA9515B62A435 /* YYCategory-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYCategory-prefix.pch"; sourceTree = "<group>"; };
 		FE9441B2BC00597A4F90F43AB9E188A9 /* Pods-MKRRadioManager_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.debug.xcconfig"; sourceTree = "<group>"; };
 		FE9441B2BC00597A4F90F43AB9E188A9 /* Pods-MKRRadioManager_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
+		223707480B66B7549AE606E1BECCAEE4 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		84F1327F252E09DF90513EC47D28E347 /* Frameworks */ = {
 		84F1327F252E09DF90513EC47D28E347 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
@@ -107,14 +154,14 @@
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
-		E3B3ACBD2CA39077AD8F448AD51BEE8B /* Frameworks */ = {
+		97BC7FB7C1DD423A7C036023061DE62D /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
-		FB826535F6E02B249006B3E6F91B09A4 /* Frameworks */ = {
+		E3B3ACBD2CA39077AD8F448AD51BEE8B /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
@@ -157,12 +204,13 @@
 			path = MKRRadioManager/Classes/MKRRadioManager/Category;
 			path = MKRRadioManager/Classes/MKRRadioManager/Category;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
-		453202A8AB343905F5CA15A3A58D87D7 /* Products */ = {
+		2F032914C3687421B76515CEB0D2C9FA /* Products */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				4624903CB75A92FD828681E070A96BA5 /* libMKRRadioManager.a */,
 				4624903CB75A92FD828681E070A96BA5 /* libMKRRadioManager.a */,
 				89DEBFD829CC1938B0AF05C60C1D8866 /* libPods-MKRRadioManager_Example.a */,
 				89DEBFD829CC1938B0AF05C60C1D8866 /* libPods-MKRRadioManager_Example.a */,
 				838E1E2CBE39C6A523090D0FA57A4C23 /* libPods-MKRRadioManager_Tests.a */,
 				838E1E2CBE39C6A523090D0FA57A4C23 /* libPods-MKRRadioManager_Tests.a */,
+				818229EDFCEFE91B8410D7C9CC7E6A5D /* libYYCategory.a */,
 			);
 			);
 			name = Products;
 			name = Products;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -197,6 +245,17 @@
 			path = ../..;
 			path = ../..;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		69F460AF34E31F5B6D6BBB779243A47E /* Support Files */ = {
+			isa = PBXGroup;
+			children = (
+				63966E2C3A0A25AD69A7722141C15905 /* YYCategory.xcconfig */,
+				BE5D9C2AF04EAB2EB9F181871A835466 /* YYCategory-dummy.m */,
+				FCD8D4C014698BA623FDA9515B62A435 /* YYCategory-prefix.pch */,
+			);
+			name = "Support Files";
+			path = "../Target Support Files/YYCategory";
+			sourceTree = "<group>";
+		};
 		6A8B740B9078EC57C7D8234CCAFC1E38 /* MKRAVPlayer */ = {
 		6A8B740B9078EC57C7D8234CCAFC1E38 /* MKRAVPlayer */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -270,7 +329,8 @@
 				9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
 				9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
 				B49F8B153615B771F34D34E857CF7DAF /* Development Pods */,
 				B49F8B153615B771F34D34E857CF7DAF /* Development Pods */,
 				D89477F20FB1DE18A04690586D7808C4 /* Frameworks */,
 				D89477F20FB1DE18A04690586D7808C4 /* Frameworks */,
-				453202A8AB343905F5CA15A3A58D87D7 /* Products */,
+				D53737B2E697521385D7D3A190BBA44D /* Pods */,
+				2F032914C3687421B76515CEB0D2C9FA /* Products */,
 				0B21C33FCE0C78E442D9723AD83947FC /* Targets Support Files */,
 				0B21C33FCE0C78E442D9723AD83947FC /* Targets Support Files */,
 			);
 			);
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -288,6 +348,14 @@
 			path = "Target Support Files/Pods-MKRRadioManager_Tests";
 			path = "Target Support Files/Pods-MKRRadioManager_Tests";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		D53737B2E697521385D7D3A190BBA44D /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				DBC602A0994F19500A57D56C660E1F77 /* YYCategory */,
+			);
+			name = Pods;
+			sourceTree = "<group>";
+		};
 		D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = {
 		D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -295,10 +363,47 @@
 			name = Frameworks;
 			name = Frameworks;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		DBC602A0994F19500A57D56C660E1F77 /* YYCategory */ = {
+			isa = PBXGroup;
+			children = (
+				D382B31C3779DD7D81BD328088C2F0A7 /* NSObject+AssociatedObject.h */,
+				524DF209E803993F2EED562FB58E4BC0 /* NSObject+AssociatedObject.m */,
+				4D5A3A65BD4499F1E9584AAFEE4AAD59 /* NSString+ChineseLength.h */,
+				A3220EC80CC6195CAD3C54F1E91436DA /* NSString+ChineseLength.m */,
+				7844F8E449C416455F19558EE621D7D3 /* NSString+Utilities.h */,
+				F1D2D0633886A25A78C38FF94C6DC847 /* NSString+Utilities.m */,
+				E4D351385C24DA2D7D0D3DDF24118D31 /* UIDevice+Helpers.h */,
+				62B11A171A33527A7129184487527111 /* UIDevice+Helpers.m */,
+				44A736529FF764EA1100F9F501828530 /* UIImage+Stretch.h */,
+				CCFB615F0269E47AA0FA76A4F096CAB4 /* UIImage+Stretch.m */,
+				DC83EFB065E5B8CE8430E9F2212DD3ED /* UIView+Sizes.h */,
+				CCE35E93200703AD92B0BFD4429DE9A4 /* UIView+Sizes.m */,
+				C336F077938B81E0E2E5F74B5E719423 /* UIView+ViewController.h */,
+				539C326717A3053BB71CD867536DC66D /* UIView+ViewController.m */,
+				69F460AF34E31F5B6D6BBB779243A47E /* Support Files */,
+			);
+			name = YYCategory;
+			path = YYCategory;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 /* End PBXGroup section */
 
 
 /* Begin PBXHeadersBuildPhase section */
 /* Begin PBXHeadersBuildPhase section */
-		0F2F44B29AD5B2130E7BC2399425DB70 /* Headers */ = {
+		1344BD8A8F8730E1125D7A8E672612A6 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				95188B67A10D8A8E1BD71B3EC5E03401 /* NSObject+AssociatedObject.h in Headers */,
+				3DB4BAE2832649B2DAE7700DEC6C78F0 /* NSString+ChineseLength.h in Headers */,
+				D55344269E8923B52473A585F6114BB2 /* NSString+Utilities.h in Headers */,
+				957D07DADE29AC5383A56283783C1607 /* UIDevice+Helpers.h in Headers */,
+				CB3964D8697546F82B3EA2C51B4D9A6F /* UIImage+Stretch.h in Headers */,
+				93CDA092DA400222FEDAE2639F1F6461 /* UIView+Sizes.h in Headers */,
+				FA5665C985869E54C1324F081C003426 /* UIView+ViewController.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		4F6DC6D52DE649585F42037E058B31B8 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
@@ -354,22 +459,40 @@
 		};
 		};
 		6759AE90C019F7CEBF481E7A84F59338 /* Pods-MKRRadioManager_Example */ = {
 		6759AE90C019F7CEBF481E7A84F59338 /* Pods-MKRRadioManager_Example */ = {
 			isa = PBXNativeTarget;
 			isa = PBXNativeTarget;
-			buildConfigurationList = 1C9F7F0512B0877A1227F1391CD06CD3 /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Example" */;
+			buildConfigurationList = 7C454F2C355999E617D5756B27DC12EF /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Example" */;
 			buildPhases = (
 			buildPhases = (
-				0F2F44B29AD5B2130E7BC2399425DB70 /* Headers */,
-				1843AD4E8D8E547A2505354BB804C1BD /* Sources */,
-				FB826535F6E02B249006B3E6F91B09A4 /* Frameworks */,
+				4F6DC6D52DE649585F42037E058B31B8 /* Headers */,
+				31517AD759525E64D350314F44B4C928 /* Sources */,
+				97BC7FB7C1DD423A7C036023061DE62D /* Frameworks */,
 			);
 			);
 			buildRules = (
 			buildRules = (
 			);
 			);
 			dependencies = (
 			dependencies = (
-				2DB87B839F0A6F6DFF8137F788B0109B /* PBXTargetDependency */,
+				6F1B30365FC6727EE106CE090AD5294D /* PBXTargetDependency */,
+				736EFB1A2E53B24A0EAA0BD127448F09 /* PBXTargetDependency */,
 			);
 			);
 			name = "Pods-MKRRadioManager_Example";
 			name = "Pods-MKRRadioManager_Example";
 			productName = "Pods-MKRRadioManager_Example";
 			productName = "Pods-MKRRadioManager_Example";
 			productReference = 89DEBFD829CC1938B0AF05C60C1D8866 /* libPods-MKRRadioManager_Example.a */;
 			productReference = 89DEBFD829CC1938B0AF05C60C1D8866 /* libPods-MKRRadioManager_Example.a */;
 			productType = "com.apple.product-type.library.static";
 			productType = "com.apple.product-type.library.static";
 		};
 		};
+		7990945DFD111A8558696D76E99A29E9 /* YYCategory */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 21DC84FC064EEC7F47A84D79D3234623 /* Build configuration list for PBXNativeTarget "YYCategory" */;
+			buildPhases = (
+				1344BD8A8F8730E1125D7A8E672612A6 /* Headers */,
+				EB37979B873502FEF1DD2343DC4C6C37 /* Sources */,
+				223707480B66B7549AE606E1BECCAEE4 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = YYCategory;
+			productName = YYCategory;
+			productReference = 818229EDFCEFE91B8410D7C9CC7E6A5D /* libYYCategory.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		CF3F8B31835CCF08A537713F7C6A6259 /* Pods-MKRRadioManager_Tests */ = {
 		CF3F8B31835CCF08A537713F7C6A6259 /* Pods-MKRRadioManager_Tests */ = {
 			isa = PBXNativeTarget;
 			isa = PBXNativeTarget;
 			buildConfigurationList = 305F5EDDFAF0A376BA729DEA936C7C85 /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Tests" */;
 			buildConfigurationList = 305F5EDDFAF0A376BA729DEA936C7C85 /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Tests" */;
@@ -405,23 +528,24 @@
 				en,
 				en,
 			);
 			);
 			mainGroup = CF1408CF629C7361332E53B88F7BD30C;
 			mainGroup = CF1408CF629C7361332E53B88F7BD30C;
-			productRefGroup = 453202A8AB343905F5CA15A3A58D87D7 /* Products */;
+			productRefGroup = 2F032914C3687421B76515CEB0D2C9FA /* Products */;
 			projectDirPath = "";
 			projectDirPath = "";
 			projectRoot = "";
 			projectRoot = "";
 			targets = (
 			targets = (
 				2F2655D0037091849641E648A2FB6766 /* MKRRadioManager */,
 				2F2655D0037091849641E648A2FB6766 /* MKRRadioManager */,
 				6759AE90C019F7CEBF481E7A84F59338 /* Pods-MKRRadioManager_Example */,
 				6759AE90C019F7CEBF481E7A84F59338 /* Pods-MKRRadioManager_Example */,
 				CF3F8B31835CCF08A537713F7C6A6259 /* Pods-MKRRadioManager_Tests */,
 				CF3F8B31835CCF08A537713F7C6A6259 /* Pods-MKRRadioManager_Tests */,
+				7990945DFD111A8558696D76E99A29E9 /* YYCategory */,
 			);
 			);
 		};
 		};
 /* End PBXProject section */
 /* End PBXProject section */
 
 
 /* Begin PBXSourcesBuildPhase section */
 /* Begin PBXSourcesBuildPhase section */
-		1843AD4E8D8E547A2505354BB804C1BD /* Sources */ = {
+		31517AD759525E64D350314F44B4C928 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				92E01E9BD33817D849DE6280771C9BA9 /* Pods-MKRRadioManager_Example-dummy.m in Sources */,
+				5566C60F36F8B80C6C538E18255122F9 /* Pods-MKRRadioManager_Example-dummy.m in Sources */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -450,14 +574,35 @@
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
+		EB37979B873502FEF1DD2343DC4C6C37 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0AA49A5335B50B43438DEB82BE67541E /* NSObject+AssociatedObject.m in Sources */,
+				C562666F135D70BB71B1FA6E29A3CE93 /* NSString+ChineseLength.m in Sources */,
+				F68891B2313721B68D8C1242F3CBEB8D /* NSString+Utilities.m in Sources */,
+				F18C3CAEDFCCBD698EA8FED4833BF494 /* UIDevice+Helpers.m in Sources */,
+				E3A4C63CA515E5EECA716CD1CCC6DF39 /* UIImage+Stretch.m in Sources */,
+				8BB2EF656E3E4F6C17E3FE5DDE644157 /* UIView+Sizes.m in Sources */,
+				05EDC679BECE92D3A77A8E321D79DF90 /* UIView+ViewController.m in Sources */,
+				D79FEF30F6ADBDEB39C96BCC063BC306 /* YYCategory-dummy.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXSourcesBuildPhase section */
 /* End PBXSourcesBuildPhase section */
 
 
 /* Begin PBXTargetDependency section */
 /* Begin PBXTargetDependency section */
-		2DB87B839F0A6F6DFF8137F788B0109B /* PBXTargetDependency */ = {
+		6F1B30365FC6727EE106CE090AD5294D /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			isa = PBXTargetDependency;
 			name = MKRRadioManager;
 			name = MKRRadioManager;
 			target = 2F2655D0037091849641E648A2FB6766 /* MKRRadioManager */;
 			target = 2F2655D0037091849641E648A2FB6766 /* MKRRadioManager */;
-			targetProxy = 50EC0A7C3BC17F4B790E7D59E6230F1B /* PBXContainerItemProxy */;
+			targetProxy = F9EBB43CCE6CE6F113D45B5DAB5B0B16 /* PBXContainerItemProxy */;
+		};
+		736EFB1A2E53B24A0EAA0BD127448F09 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = YYCategory;
+			target = 7990945DFD111A8558696D76E99A29E9 /* YYCategory */;
+			targetProxy = 3B2D1716598745AE18F6C801070B5273 /* PBXContainerItemProxy */;
 		};
 		};
 		DB80EA902F3E6D49AC7B92B2735E8B03 /* PBXTargetDependency */ = {
 		DB80EA902F3E6D49AC7B92B2735E8B03 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			isa = PBXTargetDependency;
@@ -468,6 +613,28 @@
 /* End PBXTargetDependency section */
 /* End PBXTargetDependency section */
 
 
 /* Begin XCBuildConfiguration section */
 /* Begin XCBuildConfiguration section */
+		1C00E5E6DA1F159C1420EE8E52359EE6 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5D5404FE9A358D93FBCF9F384ABC2AEA /* Pods-MKRRadioManager_Example.release.xcconfig */;
+			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+				MACH_O_TYPE = staticlib;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PODS_ROOT = "$(SRCROOT)";
+				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 		39769C66FA8FB99B807E0CA1F02C1A39 /* Debug */ = {
 		39769C66FA8FB99B807E0CA1F02C1A39 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
@@ -532,27 +699,53 @@
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
-		4C80B20BB4CE5586B38C88166AC919BC /* Debug */ = {
+		41ACE190FBAB61F75609ED1354D92E06 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = C4A35313AD83C01E57EA1815AEA6BC5C /* Pods-MKRRadioManager_Example.debug.xcconfig */;
+			baseConfigurationReference = 63966E2C3A0A25AD69A7722141C15905 /* YYCategory.xcconfig */;
 			buildSettings = {
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
-				MACH_O_TYPE = staticlib;
+				GCC_PREFIX_HEADER = "Target Support Files/YYCategory/YYCategory-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
 				OTHER_LDFLAGS = "";
 				OTHER_LDFLAGS = "";
 				OTHER_LIBTOOLFLAGS = "";
 				OTHER_LIBTOOLFLAGS = "";
-				PODS_ROOT = "$(SRCROOT)";
-				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = YYCategory;
+				PRODUCT_NAME = YYCategory;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
 				SDKROOT = iphoneos;
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TARGETED_DEVICE_FAMILY = "1,2";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
+		51D7A7D6A0336E7A1C4F5DD2C0A823B0 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 63966E2C3A0A25AD69A7722141C15905 /* YYCategory.xcconfig */;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				GCC_PREFIX_HEADER = "Target Support Files/YYCategory/YYCategory-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = YYCategory;
+				PRODUCT_NAME = YYCategory;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 		912315DE0C97AAA5B9F8EE73E2B78D35 /* Release */ = {
 		912315DE0C97AAA5B9F8EE73E2B78D35 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */;
 			baseConfigurationReference = A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */;
@@ -643,9 +836,9 @@
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
-		D48515CB3181CA1C81F36015F9F170C2 /* Release */ = {
+		D62DDC443FC24E1EF84880609A6E555D /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 5D5404FE9A358D93FBCF9F384ABC2AEA /* Pods-MKRRadioManager_Example.release.xcconfig */;
+			baseConfigurationReference = C4A35313AD83C01E57EA1815AEA6BC5C /* Pods-MKRRadioManager_Example.debug.xcconfig */;
 			buildSettings = {
 			buildSettings = {
 				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
 				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -661,9 +854,8 @@
 				SDKROOT = iphoneos;
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				SKIP_INSTALL = YES;
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
 			};
 			};
-			name = Release;
+			name = Debug;
 		};
 		};
 		E451DDFF283F5C88C57D029CBC41594E /* Release */ = {
 		E451DDFF283F5C88C57D029CBC41594E /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
@@ -728,11 +920,11 @@
 /* End XCBuildConfiguration section */
 /* End XCBuildConfiguration section */
 
 
 /* Begin XCConfigurationList section */
 /* Begin XCConfigurationList section */
-		1C9F7F0512B0877A1227F1391CD06CD3 /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Example" */ = {
+		21DC84FC064EEC7F47A84D79D3234623 /* Build configuration list for PBXNativeTarget "YYCategory" */ = {
 			isa = XCConfigurationList;
 			isa = XCConfigurationList;
 			buildConfigurations = (
 			buildConfigurations = (
-				4C80B20BB4CE5586B38C88166AC919BC /* Debug */,
-				D48515CB3181CA1C81F36015F9F170C2 /* Release */,
+				41ACE190FBAB61F75609ED1354D92E06 /* Debug */,
+				51D7A7D6A0336E7A1C4F5DD2C0A823B0 /* Release */,
 			);
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 			defaultConfigurationName = Release;
@@ -764,6 +956,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 			defaultConfigurationName = Release;
 		};
 		};
+		7C454F2C355999E617D5756B27DC12EF /* Build configuration list for PBXNativeTarget "Pods-MKRRadioManager_Example" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D62DDC443FC24E1EF84880609A6E555D /* Debug */,
+				1C00E5E6DA1F159C1420EE8E52359EE6 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 /* End XCConfigurationList section */
 /* End XCConfigurationList section */
 	};
 	};
 	rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
 	rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;

+ 25 - 0
Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example-acknowledgements.markdown

@@ -23,4 +23,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 THE SOFTWARE.
 
 
+
+## YYCategory
+
+The MIT License (MIT)
+
+Copyright (c) 2016 jinying0218
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
 Generated by CocoaPods - https://cocoapods.org
 Generated by CocoaPods - https://cocoapods.org

+ 31 - 0
Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example-acknowledgements.plist

@@ -43,6 +43,37 @@ THE SOFTWARE.
 		</dict>
 		</dict>
 		<dict>
 		<dict>
 			<key>FooterText</key>
 			<key>FooterText</key>
+			<string>The MIT License (MIT)
+
+Copyright (c) 2016 jinying0218
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>YYCategory</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
 			<string>Generated by CocoaPods - https://cocoapods.org</string>
 			<string>Generated by CocoaPods - https://cocoapods.org</string>
 			<key>Title</key>
 			<key>Title</key>
 			<string></string>
 			<string></string>

+ 4 - 4
Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example.debug.xcconfig

@@ -1,9 +1,9 @@
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager"
-LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MKRRadioManager"
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MKRRadioManager" -iframework "${PODS_ROOT}/../../libs"
-OTHER_LDFLAGS = $(inherited) -ObjC -l"MKRRadioManager" -framework "libAS-Control" -framework "libUPNP" -framework "openssl"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager" "${PODS_ROOT}/Headers/Public/YYCategory"
+LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MKRRadioManager" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategory"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MKRRadioManager" -isystem "${PODS_ROOT}/Headers/Public/YYCategory" -iframework "${PODS_ROOT}/../../libs"
+OTHER_LDFLAGS = $(inherited) -ObjC -l"MKRRadioManager" -l"YYCategory" -framework "libAS-Control" -framework "libUPNP" -framework "openssl"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 4 - 4
Example/Pods/Target Support Files/Pods-MKRRadioManager_Example/Pods-MKRRadioManager_Example.release.xcconfig

@@ -1,9 +1,9 @@
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager"
-LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MKRRadioManager"
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MKRRadioManager" -iframework "${PODS_ROOT}/../../libs"
-OTHER_LDFLAGS = $(inherited) -ObjC -l"MKRRadioManager" -framework "libAS-Control" -framework "libUPNP" -framework "openssl"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager" "${PODS_ROOT}/Headers/Public/YYCategory"
+LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MKRRadioManager" "${PODS_CONFIGURATION_BUILD_DIR}/YYCategory"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MKRRadioManager" -isystem "${PODS_ROOT}/Headers/Public/YYCategory" -iframework "${PODS_ROOT}/../../libs"
+OTHER_LDFLAGS = $(inherited) -ObjC -l"MKRRadioManager" -l"YYCategory" -framework "libAS-Control" -framework "libUPNP" -framework "openssl"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 1 - 1
Example/Pods/Target Support Files/Pods-MKRRadioManager_Tests/Pods-MKRRadioManager_Tests.debug.xcconfig

@@ -1,6 +1,6 @@
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager" "${PODS_ROOT}/Headers/Public/YYCategory"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 1 - 1
Example/Pods/Target Support Files/Pods-MKRRadioManager_Tests/Pods-MKRRadioManager_Tests.release.xcconfig

@@ -1,6 +1,6 @@
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../libs"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MKRRadioManager" "${PODS_ROOT}/Headers/Public/YYCategory"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 5 - 0
Example/Pods/Target Support Files/YYCategory/YYCategory-dummy.m

@@ -0,0 +1,5 @@
+#import <Foundation/Foundation.h>
+@interface PodsDummy_YYCategory : NSObject
+@end
+@implementation PodsDummy_YYCategory
+@end

+ 12 - 0
Example/Pods/Target Support Files/YYCategory/YYCategory-prefix.pch

@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import <UIKit/UIKit.h>
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+

+ 9 - 0
Example/Pods/Target Support Files/YYCategory/YYCategory.xcconfig

@@ -0,0 +1,9 @@
+CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYCategory
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/YYCategory" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/YYCategory"
+PODS_BUILD_DIR = ${BUILD_DIR}
+PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
+PODS_ROOT = ${SRCROOT}
+PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYCategory
+PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+SKIP_INSTALL = YES

+ 21 - 0
Example/Pods/YYCategory/LICENSE

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 jinying0218
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 2 - 0
Example/Pods/YYCategory/README.md

@@ -0,0 +1,2 @@
+# YYCategory
+常用类别库

+ 14 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.h

@@ -0,0 +1,14 @@
+//
+//  NSObject+AssociatedObject.h
+//  
+//
+//  Created by Stephen Liu on 12-11-26.
+//  Copyright (c) 2012年 Stephen. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSObject (AssociatedObject)
+- (id)objectWithAssociatedKey:(void *)key;
+- (void)setObject:(id)object forAssociatedKey:(void *)key retained:(BOOL)retain;
+@end

+ 22 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSObject+AssociatedObject.m

@@ -0,0 +1,22 @@
+//
+//  NSObject+AssociatedObject.m
+//  
+//
+//  Created by Stephen Liu on 12-11-26.
+//  Copyright (c) 2012年 Stephen. All rights reserved.
+//
+
+#import "NSObject+AssociatedObject.h"
+#import <objc/runtime.h>
+
+@implementation NSObject (AssociatedObject)
+- (id)objectWithAssociatedKey:(void *)key
+{
+    return objc_getAssociatedObject(self, key);
+}
+
+- (void)setObject:(id)object forAssociatedKey:(void *)key retained:(BOOL)retain
+{
+    objc_setAssociatedObject(self, key, object, retain?OBJC_ASSOCIATION_RETAIN_NONATOMIC:OBJC_ASSOCIATION_ASSIGN);
+}
+@end

+ 40 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.h

@@ -0,0 +1,40 @@
+//
+//  NSString+ChineseLength.h
+//  WoodpeckerDoctors
+//
+//  Created by Ariel on 15/10/27.
+//  Copyright © 2015年 Ariel. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSString (ChineseLength)
+/**
+ *  判断是否为汉字
+ *
+ *  @param string
+ *
+ *  @return BoolValue
+ */
++ (BOOL)isChinesecharacter:(NSString *)string;
+
+
+/**
+ *  计算汉字的个数
+ *
+ *  @param string
+ *
+ *  @return NSInteger
+ */
++ (NSInteger)chineseCountOfString:(NSString *)string;
+
+
+/**
+ *  计算字母的个数
+ *
+ *  @param string
+ *
+ *  @return NSInteger
+ */
++ (NSInteger)characterCountOfString:(NSString *)string;
+@end

+ 53 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+ChineseLength.m

@@ -0,0 +1,53 @@
+//
+//  NSString+ChineseLength.m
+//  WoodpeckerDoctors
+//
+//  Created by Ariel on 15/10/27.
+//  Copyright © 2015年 Ariel. All rights reserved.
+//
+
+#import "NSString+ChineseLength.h"
+
+@implementation NSString (ChineseLength)
++ (BOOL)isChinesecharacter:(NSString *)string{
+    if (string.length == 0) {
+        return NO;
+    }
+    unichar c = [string characterAtIndex:0];
+    if (c >=0x4E00 && c <=0x9FA5)     {
+        return YES;//汉字
+    }else {
+        return NO;//英文
+    }
+}
+
++ (NSInteger)chineseCountOfString:(NSString *)string{
+    int ChineseCount = 0;
+    if (string.length == 0) {
+        return 0;
+    }
+    for (int i = 0; i<string.length; i++) {
+        unichar c = [string characterAtIndex:i];
+        if (c >=0x4E00 && c <=0x9FA5){
+            ChineseCount++ ;//汉字
+        }
+    }
+    return ChineseCount;
+}
+
++ (NSInteger)characterCountOfString:(NSString *)string{
+    int characterCount = 0;
+    if (string.length == 0) {
+        return 0;
+    }
+    for (int i = 0; i<string.length; i++) {
+        unichar c = [string characterAtIndex:i];
+        if (c >=0x4E00 && c <=0x9FA5){
+        }else {
+            characterCount++;//英文
+        }
+    }
+    return characterCount;
+}
+
+@end

+ 16 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.h

@@ -0,0 +1,16 @@
+//
+//  NSString+Utilities.h
+//  GHLibrary
+//
+//  Created by Stephen Liu on 13-10-17.
+//  Copyright (c) 2013年 Stephen Liu. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSString (Utilities)
++ (NSString *)UUIDString;
+- (NSComparisonResult)versionCompare:(NSString *)string;
+- (NSString *)urlEncodeString;
+- (NSString *)urlDecodeString;
+@end

+ 55 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/NSString+Utilities.m

@@ -0,0 +1,55 @@
+//
+//  NSString+Utilities.m
+//  GHLibrary
+//
+//  Created by Stephen Liu on 13-10-17.
+//  Copyright (c) 2013年 Stephen Liu. All rights reserved.
+//
+
+#import "NSString+Utilities.h"
+
+@implementation NSString (Utilities)
++ (NSString *)UUIDString
+{
+	CFUUIDRef u = CFUUIDCreate(kCFAllocatorDefault);
+	CFStringRef s = CFUUIDCreateString(kCFAllocatorDefault, u);
+	CFRelease(u);
+	return (NSString *)CFBridgingRelease(s);
+}
+
+- (NSComparisonResult)versionCompare:(NSString *)string
+{
+    if (!string) {
+        return NSOrderedDescending;
+    }
+    __block NSComparisonResult result = NSOrderedSame;
+    NSArray *selfComponents = [self componentsSeparatedByString:@"."];
+    NSArray *stringComponents = [string componentsSeparatedByString:@"."];
+    [selfComponents enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
+        NSString *local = @"";
+        if (stringComponents.count > idx) {
+            local = [stringComponents objectAtIndex:idx];
+        }
+        if (obj.integerValue < local.integerValue) {
+            result = NSOrderedAscending;
+            *stop = YES;
+        } else if(obj.integerValue > local.integerValue) {
+            result = NSOrderedDescending;
+            *stop = YES;
+        }
+    }];
+    return result;
+}
+
+- (NSString *)urlEncodeString
+{
+	NSString *result = (__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)self, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
+	return result;
+}
+
+- (NSString *)urlDecodeString
+{
+	NSString *result = (__bridge_transfer NSString*)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (__bridge CFStringRef)self, CFSTR(""), kCFStringEncodingUTF8);
+	return result;
+}
+@end

+ 33 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.h

@@ -0,0 +1,33 @@
+//
+//  UIDevice+Helpers.h
+//  
+//
+//  Created by Kai on 9/1/11.
+//  Copyright 2011 Stephen. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface UIDevice (Helpers)
+
+- (BOOL)isRetinaDisplay;
+- (BOOL)is4InchRetinaDisplay;
+- (int)systemMainVersion;
+
+- (NSString *)carrierName;
+- (NSString *)mobileCountryCode;
+- (NSString *)mobileNetworkCode;
+- (NSString *)macAddress;
+
+- (BOOL)canMakeCall;
+- (BOOL)canSendText;
+
++ (NSString *)platform;
++ (NSString *)getReturnPlat:(NSString *)platform;
++ (NSString *)getStandardPlat;
+
+- (BOOL)hasLedLight;
+- (BOOL)isLedLightOn;
+- (void)turnLedLightTo:(BOOL)on;
+
+@end

+ 251 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIDevice+Helpers.m

@@ -0,0 +1,251 @@
+//
+//  UIDevice+Helpers.m
+//  
+//
+//  Created by Kai on 9/1/11.
+//  Copyright 2011 Stephen. All rights reserved.
+//
+
+#import "UIDevice+Helpers.h"
+#import <MessageUI/MessageUI.h>
+#import <CoreTelephony/CTTelephonyNetworkInfo.h>
+#import <CoreTelephony/CTCarrier.h>
+#import <AVFoundation/AVFoundation.h>
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+
+
+@implementation UIDevice (Helpers)
+
+- (BOOL)isRetinaDisplay
+{
+    if ([[UIScreen mainScreen] scale] > 1.0)
+    {
+        return YES;
+    }
+	
+	return NO;
+}
+
+- (BOOL)is4InchRetinaDisplay
+{
+    if ([[UIScreen mainScreen] applicationFrame].size.height > 480)
+    {
+        return YES;
+    }
+    
+    return NO;
+}
+
+static int systemMainVersion = 0;
+- (int)systemMainVersion
+{
+	if (systemMainVersion > 0) {
+		return systemMainVersion;
+	}
+	systemMainVersion = [self systemVersion].intValue;
+	return systemMainVersion;
+}
+
+- (NSString *)carrierName
+{
+    // Carrier name.
+    CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
+	NSString *carrierName = [[telephonyNetworkInfo subscriberCellularProvider] carrierName];
+    return carrierName;
+}
+
+- (NSString *)mobileCountryCode
+{
+    CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
+	return [[telephonyNetworkInfo subscriberCellularProvider] mobileCountryCode];
+}
+- (NSString *)mobileNetworkCode
+{
+    CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
+	return [[telephonyNetworkInfo subscriberCellularProvider] mobileNetworkCode];
+}
+
+- (BOOL)canMakeCall
+{
+    static BOOL checked = NO;
+    static BOOL result = NO;
+    
+    if (checked == NO)
+    {
+        result = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]];
+        checked = YES;
+    }
+    
+    return result;
+}
+
+- (BOOL)canSendText
+{
+    static BOOL checked = NO;
+    static BOOL result = NO;
+    
+    if (checked == NO)
+    {
+        result = [MFMessageComposeViewController canSendText];
+        checked = YES;
+    }
+    
+    return result;
+}
+
+
++ (NSString *) platform
+{
+	size_t size;
+	sysctlbyname("hw.machine", NULL, &size, NULL, 0);
+	char *machine = malloc(size);
+	sysctlbyname("hw.machine", machine, &size, NULL, 0);
+	NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
+	free(machine);
+	return platform;
+}
+
++ (NSString *)getReturnPlat:(NSString *)platform
+{
+	if ([platform isEqualToString:@"iPod1,1"]) {
+		return @"ipodtouch1";
+	}
+	if ([platform isEqualToString:@"iPod2,1"]) {
+		return @"ipodtouch2";
+	}
+	if ([platform isEqualToString:@"iPod3,1"]) {
+		return @"ipodtouch3";
+	}
+	if ([platform isEqualToString:@"iPod4,1"]) {
+		return @"ipodtouch4";
+	}
+	if ([platform isEqualToString:@"iPhone1,1"]) {
+		return @"iphone1";
+	}
+	if ([platform isEqualToString:@"iPhone1,2"]) {
+		return @"iphone3g";
+	}
+	if ([platform isEqualToString:@"iPhone2,1"]) {
+		return @"iphone3gs";
+	}
+	if ([platform isEqualToString:@"iPhone3,1"]) {
+		return @"iphone4";
+	}
+	if ([platform isEqualToString:@"iPad1,1"]) {
+		return @"ipad1";
+	}
+	if ([platform isEqualToString:@"iPad2,1"]) {
+		return @"ipad2";
+	} else {
+		return @"iphone";
+	}
+}
+
++ (NSString *) getStandardPlat
+{
+//	return [self getReturnPlat:[self platform]];
+	return [self platform];
+}
+
+
+// 
+// source: http://mobiledevelopertips.com/device/determine-mac-address.html
+// 
+- (NSString *)macAddress
+{
+    int                 mgmtInfoBase[6];
+    char                *msgBuffer = NULL;
+    size_t              length;
+    unsigned char       macAddress[6];
+    struct if_msghdr    *interfaceMsgStruct;
+    struct sockaddr_dl  *socketStruct;
+    NSString            *errorFlag = NULL;
+    
+    // Setup the management Information Base (mib)
+    mgmtInfoBase[0] = CTL_NET;        // Request network subsystem
+    mgmtInfoBase[1] = AF_ROUTE;       // Routing table info
+    mgmtInfoBase[2] = 0;
+    mgmtInfoBase[3] = AF_LINK;        // Request link layer information
+    mgmtInfoBase[4] = NET_RT_IFLIST;  // Request all configured interfaces
+    
+    // With all configured interfaces requested, get handle index
+    if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0)
+        errorFlag = @"if_nametoindex failure";
+    else
+    {
+        // Get the size of the data available (store in len)
+        if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0)
+            errorFlag = @"sysctl mgmtInfoBase failure";
+        else
+        {
+            // Alloc memory based on above call
+            if ((msgBuffer = malloc(length)) == NULL)
+                errorFlag = @"buffer allocation failure";
+            else
+            {
+                // Get system information, store in buffer
+                if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0)
+                    errorFlag = @"sysctl msgBuffer failure";
+            }
+        }
+    }
+    
+    // Befor going any further...
+    if (errorFlag != NULL)
+    {
+        //NSLog(@"Error: %@", errorFlag);
+        free(msgBuffer);
+        return nil;
+    }
+    
+    // Map msgbuffer to interface message structure
+    interfaceMsgStruct = (struct if_msghdr *) msgBuffer;
+    
+    // Map to link-level socket structure
+    socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);
+    
+    // Copy link layer address data in socket structure to an array
+    memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6);
+    
+    // Read from char array into a string object, into traditional Mac address format
+    NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",
+                                  macAddress[0], macAddress[1], macAddress[2],
+                                  macAddress[3], macAddress[4], macAddress[5]];
+    //NSLog(@"Mac Address: %@", macAddressString);
+    
+    // Release the buffer memory
+    free(msgBuffer);
+    
+    return macAddressString;
+}
+
+- (BOOL)hasLedLight
+{
+    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
+    return [device hasTorch];
+}
+- (BOOL)isLedLightOn
+{
+    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
+    if ([device hasTorch])
+    {
+        return [device torchMode] == AVCaptureTorchModeOn;
+    }
+    return NO;
+}
+- (void)turnLedLightTo:(BOOL)on
+{
+    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
+    if ([device hasTorch])
+    {
+        [device lockForConfiguration:nil];
+        [device setTorchMode:on?AVCaptureTorchModeOn:AVCaptureTorchModeOff];
+        [device unlockForConfiguration];
+    }
+}
+@end

+ 51 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.h

@@ -0,0 +1,51 @@
+//
+//  UIImage+Stretch.h
+//  
+//
+//  Created by Stephen Liu on 11/17/11.
+//  Copyright (c) 2011 Stephen. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface UIImage (Stretch)
+
+- (UIImage *)stretchableImageByCenter;
+- (UIImage *)stretchableImageByHeightCenter;
+- (UIImage *)stretchableImageByWidthCenter;
+
+/**
+ The right horizontal end-cap size. (read-only)
+ 
+ End caps specify the portion of an image that should not be resized when an image is stretched. This technique is used
+ to implement buttons and other resizable image-based interface elements. When a button with end caps is resized, the
+ resizing occurs only in the middle of the button, in the region between the end caps. The end caps themselves keep
+ their original size and appearance.
+ 
+ This property specifies the size of the left end cap. The middle (stretchable) portion is assumed to be `1` pixel wide.
+ 
+ By default, this property is set to `0`, which indicates that the image does not use end caps and the entire image is
+ subject to stretching. To create a new image with a nonzero value for this property, use the
+ `stretchableImageWithLeftCapWidth:topCapHeight:` method.
+ */
+@property (nonatomic, readonly) NSInteger rightCapWidth;
+
+/**
+ The bottom vertical end-cap size. (read-only)
+ 
+ End caps specify the portion of an image that should not be resized when an image is stretched. This technique is used
+ to implement buttons and other resizable image-based interface elements. When a button with end caps is resized, the
+ resizing occurs only in the middle of the button, in the region between the end caps. The end caps themselves keep
+ their original size and appearance.
+ 
+ This property specifies the size of the top end cap. The middle (stretchable) portion is assumed to be `1` pixel wide.
+ 
+ By default, this property is set to `0`, which indicates that the image does not use end caps and the entire image is
+ subject to stretching. To create a new image with a nonzero value for this property, use the
+ `stretchableImageWithLeftCapWidth:topCapHeight:` method.
+ */
+@property (nonatomic, readonly) NSInteger bottomCapHeight;
+
++ (UIImage *)imageWithColor:(UIColor *)color;
++ (UIImage *)imageWithColor:(UIColor *)color radiu:(CGFloat)radiu;
+@end

+ 92 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIImage+Stretch.m

@@ -0,0 +1,92 @@
+//
+//  UIImage+Stretch.m
+//  
+//
+//  Created by Stephen Liu on 11/17/11.
+//  Copyright (c) 2011 Stephen. All rights reserved.
+//
+
+#import "UIImage+Stretch.h"
+
+@implementation UIImage (Stretch)
+
+- (UIImage *)stretchableImageByCenter
+{
+	CGFloat leftCapWidth = floorf(self.size.width / 2);
+	if (leftCapWidth == self.size.width / 2)
+	{
+		leftCapWidth--;
+	}
+	
+	CGFloat topCapHeight = floorf(self.size.height / 2);
+	if (topCapHeight == self.size.height / 2)
+	{
+		topCapHeight--;
+	}
+	
+	return [self stretchableImageWithLeftCapWidth:leftCapWidth 
+									 topCapHeight:topCapHeight];
+}
+
+- (UIImage *)stretchableImageByHeightCenter
+{
+	CGFloat topCapHeight = floorf(self.size.height / 2);
+	if (topCapHeight == self.size.height / 2)
+	{
+		topCapHeight--;
+	}
+	
+	return [self stretchableImageWithLeftCapWidth:0
+									 topCapHeight:topCapHeight];
+}
+
+- (UIImage *)stretchableImageByWidthCenter
+{
+	CGFloat leftCapWidth = floorf(self.size.width / 2);
+	if (leftCapWidth == self.size.width / 2)
+	{
+		leftCapWidth--;
+	}
+	
+	return [self stretchableImageWithLeftCapWidth:leftCapWidth 
+									 topCapHeight:0];
+}
+
+- (NSInteger)rightCapWidth
+{
+	return (NSInteger)self.size.width - (self.leftCapWidth + 1);
+}
+
+
+- (NSInteger)bottomCapHeight
+{
+	return (NSInteger)self.size.height - (self.topCapHeight + 1);
+}
+
++ (UIImage *)imageWithColor:(UIColor *)color
+{
+    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
+    UIGraphicsBeginImageContext(rect.size);
+    CGContextRef context = UIGraphicsGetCurrentContext();
+    CGContextSetFillColorWithColor(context, [color CGColor]);
+    CGContextFillRect(context, rect);
+    
+    UIImage *theImage = [UIGraphicsGetImageFromCurrentImageContext() stretchableImageByCenter];
+    UIGraphicsEndImageContext();
+    return theImage;
+}
+
++ (UIImage *)imageWithColor:(UIColor *)color radiu:(CGFloat)radiu
+{
+    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f + radiu*2, 1.0f + radiu*2);
+    UIGraphicsBeginImageContext(rect.size);
+    CGContextRef context = UIGraphicsGetCurrentContext();
+    CGContextAddPath(context, [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radiu].CGPath);
+    CGContextSetFillColorWithColor(context, color.CGColor);
+    CGContextDrawPath(context, kCGPathFill);
+    
+    UIImage *theImage = [UIGraphicsGetImageFromCurrentImageContext() stretchableImageByCenter];
+    UIGraphicsEndImageContext();
+    return theImage;
+}
+@end

+ 140 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.h

@@ -0,0 +1,140 @@
+//
+// Copyright 2009-2010 Facebook
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#import <UIKit/UIKitDefines.h>
+
+@interface UIView (Sizes)
+
+/**
+ * Shortcut for frame.origin.x.
+ *
+ * Sets frame.origin.x = left
+ */
+@property (nonatomic) CGFloat left;
+
+/**
+ * Shortcut for frame.origin.y
+ *
+ * Sets frame.origin.y = top
+ */
+@property (nonatomic) CGFloat top;
+
+/**
+ * Shortcut for frame.origin.x + frame.size.width
+ *
+ * Sets frame.origin.x = right - frame.size.width
+ */
+@property (nonatomic) CGFloat right;
+
+/**
+ * Shortcut for frame.origin.y + frame.size.height
+ *
+ * Sets frame.origin.y = bottom - frame.size.height
+ */
+@property (nonatomic) CGFloat bottom;
+
+/**
+ * Shortcut for frame.size.width
+ *
+ * Sets frame.size.width = width
+ */
+@property (nonatomic) CGFloat width;
+
+/**
+ * Shortcut for frame.size.height
+ *
+ * Sets frame.size.height = height
+ */
+@property (nonatomic) CGFloat height;
+
+/**
+ * Shortcut for center.x
+ *
+ * Sets center.x = centerX
+ */
+@property (nonatomic) CGFloat centerX;
+
+/**
+ * Shortcut for center.y
+ *
+ * Sets center.y = centerY
+ */
+@property (nonatomic) CGFloat centerY;
+
+/**
+ * Return the x coordinate on the screen.
+ */
+@property (nonatomic, readonly) CGFloat ttScreenX;
+
+/**
+ * Return the y coordinate on the screen.
+ */
+@property (nonatomic, readonly) CGFloat ttScreenY;
+
+/**
+ * Return the x coordinate on the screen, taking into account scroll views.
+ */
+@property (nonatomic, readonly) CGFloat screenViewX;
+
+/**
+ * Return the y coordinate on the screen, taking into account scroll views.
+ */
+@property (nonatomic, readonly) CGFloat screenViewY;
+
+/**
+ * Return the view frame on the screen, taking into account scroll views.
+ */
+@property (nonatomic, readonly) CGRect screenFrame;
+
+/**
+ * Shortcut for frame.origin
+ */
+@property (nonatomic) CGPoint origin;
+
+/**
+ * Shortcut for frame.size
+ */
+@property (nonatomic) CGSize size;
+
+/**
+ * Finds the first descendant view (including this view) that is a member of a particular class.
+ */
+- (UIView*)descendantOrSelfWithClass:(Class)cls;
+
+/**
+ * Finds the first ancestor view (including this view) that is a member of a particular class.
+ */
+- (UIView*)ancestorOrSelfWithClass:(Class)cls;
+
+/**
+ * Removes all subviews.
+ */
+- (void)removeAllSubviews;
+
+/**
+ * The view controller whose view contains this view.
+ */
+- (UIViewController*)viewController;
+
+- (UIImage *)imageFromView;
+
+- (CGRect)convertFrameToWindow:(UIWindow *)window;
+
+- (CGRect)expandedFrame:(CGRect)originalFrame withVerticalOffset:(CGFloat)offset;
+- (CGRect)expandedFrame:(CGRect)originalFrame withHorizontalOffset:(CGFloat)offset;
+- (CGRect)expandedFrame:(CGRect)originalFrame withOffset:(CGFloat)offset;
+
+@end

+ 326 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+Sizes.m

@@ -0,0 +1,326 @@
+//
+// Copyright 2009-2010 Facebook
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
+#import <QuartzCore/QuartzCore.h>
+@implementation UIView (Sizes)
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)left {
+	return self.frame.origin.x;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setLeft:(CGFloat)x {
+	CGRect frame = self.frame;
+	frame.origin.x = x;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)top {
+	return self.frame.origin.y;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setTop:(CGFloat)y {
+	CGRect frame = self.frame;
+	frame.origin.y = y;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)right {
+	return self.frame.origin.x + self.frame.size.width;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setRight:(CGFloat)right {
+	CGRect frame = self.frame;
+	frame.origin.x = right - frame.size.width;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)bottom {
+	return self.frame.origin.y + self.frame.size.height;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setBottom:(CGFloat)bottom {
+	CGRect frame = self.frame;
+	frame.origin.y = bottom - frame.size.height;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)centerX {
+	return self.center.x;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setCenterX:(CGFloat)centerX {
+	self.center = CGPointMake(centerX, self.center.y);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)centerY {
+	return self.center.y;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setCenterY:(CGFloat)centerY {
+	self.center = CGPointMake(self.center.x, centerY);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)width {
+	return self.frame.size.width;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setWidth:(CGFloat)width {
+	CGRect frame = self.frame;
+	frame.size.width = width;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)height {
+	return self.frame.size.height;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setHeight:(CGFloat)height {
+	CGRect frame = self.frame;
+	frame.size.height = height;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)ttScreenX {
+	CGFloat x = 0;
+	for (UIView* view = self; view; view = view.superview) {
+		x += [view left];
+	}
+	return x;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)ttScreenY {
+	CGFloat y = 0;
+	for (UIView* view = self; view; view = view.superview) {
+		y += [view top];
+	}
+	return y;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)screenViewX {
+	CGFloat x = 0;
+	for (UIView* view = self; view; view = view.superview) {
+		x += [view left];
+		
+		if ([view isKindOfClass:[UIScrollView class]]) {
+			UIScrollView* scrollView = (UIScrollView*)view;
+			x -= scrollView.contentOffset.x;
+		}
+	}
+	
+	return x;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGFloat)screenViewY {
+	CGFloat y = 0;
+	for (UIView* view = self; view; view = view.superview) {
+		y += [view top];
+		
+		if ([view isKindOfClass:[UIScrollView class]]) {
+			UIScrollView* scrollView = (UIScrollView*)view;
+			y -= scrollView.contentOffset.y;
+		}
+	}
+	return y;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGRect)screenFrame {
+	return CGRectMake([self screenViewX], [self screenViewY], [self width], [self height]);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGPoint)origin {
+	return self.frame.origin;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setOrigin:(CGPoint)origin {
+	CGRect frame = self.frame;
+	frame.origin = origin;
+	self.frame = frame;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGSize)size {
+	return self.frame.size;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setSize:(CGSize)size {
+	CGRect frame = self.frame;
+	frame.size = size;
+	self.frame = frame;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (UIView*)descendantOrSelfWithClass:(Class)cls {
+	if ([self isKindOfClass:cls])
+		return self;
+	
+	for (UIView* child in self.subviews) {
+		UIView* it = [child descendantOrSelfWithClass:cls];
+		if (it)
+			return it;
+	}
+	
+	return nil;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (UIView*)ancestorOrSelfWithClass:(Class)cls {
+	if ([self isKindOfClass:cls]) {
+		return self;
+	} else if (self.superview) {
+		return [self.superview ancestorOrSelfWithClass:cls];
+	} else {
+		return nil;
+	}
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)removeAllSubviews {
+	while (self.subviews.count) {
+		UIView* child = self.subviews.lastObject;
+		[child removeFromSuperview];
+	}
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (CGPoint)offsetFromView:(UIView*)otherView {
+	CGFloat x = 0, y = 0;
+	for (UIView* view = self; view && view != otherView; view = view.superview) {
+		x += [view left];
+		y += [view top];
+	}
+	return CGPointMake(x, y);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (UIViewController*)viewController {
+	for (UIView* next = [self superview]; next; next = next.superview) {
+		UIResponder* nextResponder = [next nextResponder];
+		if ([nextResponder isKindOfClass:[UIViewController class]]) {
+			return (UIViewController*)nextResponder;
+		}
+	}
+	return nil;
+}
+
+- (UIImage *)imageFromView
+{
+    CGSize size = self.size;
+    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
+    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
+    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+    image = [UIImage imageWithCGImage:image.CGImage scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
+    UIGraphicsEndImageContext();
+    return image;
+}
+
+- (CGRect)convertFrameToWindow:(UIWindow *)window
+{
+    
+    UIView *superView = [self superview];;
+    
+    CGRect frameInSuperView = [self frame];
+    while (superView && (superView != window)){
+        if ([superView superview])
+        {
+            frameInSuperView = [superView.superview convertRect:frameInSuperView fromView:superView];
+        }
+        superView = [superView superview];
+    }
+    return frameInSuperView;
+}
+
+- (CGRect)expandedFrame:(CGRect)originalFrame withOffset:(CGFloat)offset
+{
+    if (CGRectIsEmpty(originalFrame))
+    {
+        return CGRectZero;
+    }
+    return CGRectInset(originalFrame, -offset, -offset);
+}
+
+- (CGRect)expandedFrame:(CGRect)originalFrame withVerticalOffset:(CGFloat)offset
+{
+    if (CGRectIsEmpty(originalFrame))
+    {
+        return CGRectZero;
+    }
+    return CGRectInset(originalFrame, 0, -offset);
+}
+
+- (CGRect)expandedFrame:(CGRect)originalFrame withHorizontalOffset:(CGFloat)offset
+{
+    if (CGRectIsEmpty(originalFrame))
+    {
+        return CGRectZero;
+    }
+    return CGRectInset(originalFrame, -offset, 0);
+}
+
+@end

+ 18 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.h

@@ -0,0 +1,18 @@
+//
+//  UIView+ViewController.h
+//
+//  Created by 吴 天 on 12-10-26.
+//
+
+#import <UIKit/UIKit.h>
+
+/**
+ source:http://stackoverflow.com/questions/1340434/get-to-uiviewcontroller-from-uiview-on-iphone
+ "IMHO, this is a design flaw. The view should not need to be aware of the controller."
+ But "one reason you need to allow the UIView to be aware of its UIViewController is when you have custom UIView subclasses that need to push a modal view/dialog."
+ */
+
+@interface UIView (ViewController)
+- (UIViewController *)firstAvailableUIViewController;
+- (id)traverseResponderChainForUIViewController;
+@end

+ 33 - 0
Example/Pods/YYCategory/YYCategoryDemo/YYCategory/UIView+ViewController.m

@@ -0,0 +1,33 @@
+//
+//  UIView+ViewController.m
+//
+//  Created by 吴 天 on 12-10-26.
+//
+
+#import "UIView+ViewController.h"
+
+@implementation UIView (ViewController)
+
+- (UIViewController *)firstAvailableUIViewController
+{
+    // convenience function for casting and to "mask" the recursive function
+    return (UIViewController *)[self traverseResponderChainForUIViewController];
+}
+
+- (id)traverseResponderChainForUIViewController
+{
+    id nextResponder = [self nextResponder];
+    if ([nextResponder isKindOfClass:[UIViewController class]])
+    {
+        return nextResponder;
+    }
+    else if ([nextResponder isKindOfClass:[UIView class]])
+    {
+        return [nextResponder traverseResponderChainForUIViewController];
+    }
+    else
+    {
+        return nil;
+    }
+}
+@end

+ 1 - 0
MKRRadioManager/Classes/MKRRadioManager/MKRAVPlayer/MKRAVPlayer.m

@@ -59,6 +59,7 @@ NSURL * MKRUrlWithString(NSString *string){
     if ([string rangeOfString:@"/"].location == 0) {//本地资源
     if ([string rangeOfString:@"/"].location == 0) {//本地资源
         url = [NSURL fileURLWithPath:string];
         url = [NSURL fileURLWithPath:string];
     }else{
     }else{
+        string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
         url = [NSURL URLWithString:string];
         url = [NSURL URLWithString:string];
     }
     }
     return url;
     return url;