appjam 0.1.8.9 → 0.1.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/appjam/generators/templates/blank/EiffelApplication.xcodeproj/project.pbxproj +114 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication.xcodeproj/project.xcworkspace/xcuserdata/eiffel.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/AppDelegate.m.tt +13 -1
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/CustomBadge.h +52 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/CustomBadge.m +241 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherItem.h +58 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherItem.m +227 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherPageControl.h +37 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherPageControl.m +117 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherScrollView.h +23 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherScrollView.m +42 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherView.h +70 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherView.m +830 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherViewController.h +38 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/components/MyLauncher/MyLauncherViewController.m +302 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/AESCrypt.h +37 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/AESCrypt.m +50 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSData+Base64.h +17 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSData+Base64.m +110 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSData+CommonCrypto.h +112 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSData+CommonCrypto.m +546 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSString+Base64.h +15 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/AESCrypt-ObjC/NSString+Base64.m +82 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCCrossHairView.h +16 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCCrossHairView.m +43 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCFrameView.h +55 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCFrameView.m +234 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCIntrospect.h +155 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCIntrospect.m +1654 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCIntrospectSettings.h +56 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCStatusBarOverlay.h +34 -0
- data/lib/appjam/generators/templates/blank/EiffelApplication/libs/toolkit/DCIntrospect/DCStatusBarOverlay.m +107 -0
- data/lib/appjam/version.rb +1 -1
- metadata +32 -3
@@ -55,6 +55,17 @@
|
|
55
55
|
C54DA6841714126000457BF3 /* AFRESTClient.m in Sources */ = {isa = PBXBuildFile; fileRef = C54DA67D1714126000457BF3 /* AFRESTClient.m */; };
|
56
56
|
C54DA6851714126000457BF3 /* NSString+InflectorKit.m in Sources */ = {isa = PBXBuildFile; fileRef = C54DA6801714126000457BF3 /* NSString+InflectorKit.m */; };
|
57
57
|
C54DA6861714126000457BF3 /* TTTStringInflector.m in Sources */ = {isa = PBXBuildFile; fileRef = C54DA6821714126000457BF3 /* TTTStringInflector.m */; };
|
58
|
+
C5BD358B1728B2A700509984 /* DCCrossHairView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5BD35831728B2A700509984 /* DCCrossHairView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
59
|
+
C5BD358C1728B2A700509984 /* DCFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5BD35851728B2A700509984 /* DCFrameView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
60
|
+
C5BD358D1728B2A700509984 /* DCIntrospect.m in Sources */ = {isa = PBXBuildFile; fileRef = C5BD35871728B2A700509984 /* DCIntrospect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
61
|
+
C5BD358E1728B2A700509984 /* DCStatusBarOverlay.m in Sources */ = {isa = PBXBuildFile; fileRef = C5BD358A1728B2A700509984 /* DCStatusBarOverlay.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
62
|
+
C5E068471728E4190056F1DD /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5E068461728E4190056F1DD /* OpenAL.framework */; };
|
63
|
+
C5E068B41728E6640056F1DD /* CustomBadge.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068A91728E6640056F1DD /* CustomBadge.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
64
|
+
C5E068B51728E6640056F1DD /* MyLauncherItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068AB1728E6640056F1DD /* MyLauncherItem.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
65
|
+
C5E068B61728E6640056F1DD /* MyLauncherPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068AD1728E6640056F1DD /* MyLauncherPageControl.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
66
|
+
C5E068B71728E6640056F1DD /* MyLauncherScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068AF1728E6640056F1DD /* MyLauncherScrollView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
67
|
+
C5E068B81728E6640056F1DD /* MyLauncherView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068B11728E6640056F1DD /* MyLauncherView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
68
|
+
C5E068B91728E6640056F1DD /* MyLauncherViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E068B31728E6640056F1DD /* MyLauncherViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
58
69
|
C5FAFE11170B0EC300D83034 /* AwesomeMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FAFCCB170B0EC300D83034 /* AwesomeMenu.m */; };
|
59
70
|
C5FAFE12170B0EC300D83034 /* AwesomeMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FAFCCD170B0EC300D83034 /* AwesomeMenuItem.m */; };
|
60
71
|
C5FAFE13170B0EC300D83034 /* bg-addbutton-highlighted.png in Resources */ = {isa = PBXBuildFile; fileRef = C5FAFCCF170B0EC300D83034 /* bg-addbutton-highlighted.png */; };
|
@@ -207,6 +218,10 @@
|
|
207
218
|
C5FAFEB3170B1A9700D83034 /* TFHpple.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FAFEAE170B1A9700D83034 /* TFHpple.m */; };
|
208
219
|
C5FAFEB4170B1A9700D83034 /* TFHppleElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FAFEB0170B1A9700D83034 /* TFHppleElement.m */; };
|
209
220
|
C5FAFEB5170B1A9700D83034 /* XPathQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FAFEB2170B1A9700D83034 /* XPathQuery.m */; };
|
221
|
+
C5FCC4751728DAA300D5E07F /* AESCrypt.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC46D1728DAA300D5E07F /* AESCrypt.m */; };
|
222
|
+
C5FCC4761728DAA300D5E07F /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC46F1728DAA300D5E07F /* NSData+Base64.m */; };
|
223
|
+
C5FCC4771728DAA300D5E07F /* NSData+CommonCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC4711728DAA300D5E07F /* NSData+CommonCrypto.m */; };
|
224
|
+
C5FCC4781728DAA300D5E07F /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC4731728DAA300D5E07F /* NSString+Base64.m */; };
|
210
225
|
/* End PBXBuildFile section */
|
211
226
|
|
212
227
|
/* Begin PBXContainerItemProxy section */
|
@@ -277,6 +292,28 @@
|
|
277
292
|
C54DA6801714126000457BF3 /* NSString+InflectorKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+InflectorKit.m"; sourceTree = "<group>"; };
|
278
293
|
C54DA6811714126000457BF3 /* TTTStringInflector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTTStringInflector.h; sourceTree = "<group>"; };
|
279
294
|
C54DA6821714126000457BF3 /* TTTStringInflector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTTStringInflector.m; sourceTree = "<group>"; };
|
295
|
+
C5BD35821728B2A700509984 /* DCCrossHairView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCCrossHairView.h; sourceTree = "<group>"; };
|
296
|
+
C5BD35831728B2A700509984 /* DCCrossHairView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCCrossHairView.m; sourceTree = "<group>"; };
|
297
|
+
C5BD35841728B2A700509984 /* DCFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCFrameView.h; sourceTree = "<group>"; };
|
298
|
+
C5BD35851728B2A700509984 /* DCFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCFrameView.m; sourceTree = "<group>"; };
|
299
|
+
C5BD35861728B2A700509984 /* DCIntrospect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCIntrospect.h; sourceTree = "<group>"; };
|
300
|
+
C5BD35871728B2A700509984 /* DCIntrospect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCIntrospect.m; sourceTree = "<group>"; };
|
301
|
+
C5BD35881728B2A700509984 /* DCIntrospectSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCIntrospectSettings.h; sourceTree = "<group>"; };
|
302
|
+
C5BD35891728B2A700509984 /* DCStatusBarOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCStatusBarOverlay.h; sourceTree = "<group>"; };
|
303
|
+
C5BD358A1728B2A700509984 /* DCStatusBarOverlay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCStatusBarOverlay.m; sourceTree = "<group>"; };
|
304
|
+
C5E068461728E4190056F1DD /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
|
305
|
+
C5E068A81728E6640056F1DD /* CustomBadge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomBadge.h; sourceTree = "<group>"; };
|
306
|
+
C5E068A91728E6640056F1DD /* CustomBadge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomBadge.m; sourceTree = "<group>"; };
|
307
|
+
C5E068AA1728E6640056F1DD /* MyLauncherItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLauncherItem.h; sourceTree = "<group>"; };
|
308
|
+
C5E068AB1728E6640056F1DD /* MyLauncherItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLauncherItem.m; sourceTree = "<group>"; };
|
309
|
+
C5E068AC1728E6640056F1DD /* MyLauncherPageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLauncherPageControl.h; sourceTree = "<group>"; };
|
310
|
+
C5E068AD1728E6640056F1DD /* MyLauncherPageControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLauncherPageControl.m; sourceTree = "<group>"; };
|
311
|
+
C5E068AE1728E6640056F1DD /* MyLauncherScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLauncherScrollView.h; sourceTree = "<group>"; };
|
312
|
+
C5E068AF1728E6640056F1DD /* MyLauncherScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLauncherScrollView.m; sourceTree = "<group>"; };
|
313
|
+
C5E068B01728E6640056F1DD /* MyLauncherView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLauncherView.h; sourceTree = "<group>"; };
|
314
|
+
C5E068B11728E6640056F1DD /* MyLauncherView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLauncherView.m; sourceTree = "<group>"; };
|
315
|
+
C5E068B21728E6640056F1DD /* MyLauncherViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLauncherViewController.h; sourceTree = "<group>"; };
|
316
|
+
C5E068B31728E6640056F1DD /* MyLauncherViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLauncherViewController.m; sourceTree = "<group>"; };
|
280
317
|
C5FAFCCA170B0EC300D83034 /* AwesomeMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AwesomeMenu.h; sourceTree = "<group>"; };
|
281
318
|
C5FAFCCB170B0EC300D83034 /* AwesomeMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AwesomeMenu.m; sourceTree = "<group>"; };
|
282
319
|
C5FAFCCC170B0EC300D83034 /* AwesomeMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AwesomeMenuItem.h; sourceTree = "<group>"; };
|
@@ -565,6 +602,14 @@
|
|
565
602
|
C5FAFEB0170B1A9700D83034 /* TFHppleElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TFHppleElement.m; sourceTree = "<group>"; };
|
566
603
|
C5FAFEB1170B1A9700D83034 /* XPathQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPathQuery.h; sourceTree = "<group>"; };
|
567
604
|
C5FAFEB2170B1A9700D83034 /* XPathQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPathQuery.m; sourceTree = "<group>"; };
|
605
|
+
C5FCC46C1728DAA300D5E07F /* AESCrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AESCrypt.h; sourceTree = "<group>"; };
|
606
|
+
C5FCC46D1728DAA300D5E07F /* AESCrypt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AESCrypt.m; sourceTree = "<group>"; };
|
607
|
+
C5FCC46E1728DAA300D5E07F /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; };
|
608
|
+
C5FCC46F1728DAA300D5E07F /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; };
|
609
|
+
C5FCC4701728DAA300D5E07F /* NSData+CommonCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+CommonCrypto.h"; sourceTree = "<group>"; };
|
610
|
+
C5FCC4711728DAA300D5E07F /* NSData+CommonCrypto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+CommonCrypto.m"; sourceTree = "<group>"; };
|
611
|
+
C5FCC4721728DAA300D5E07F /* NSString+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Base64.h"; sourceTree = "<group>"; };
|
612
|
+
C5FCC4731728DAA300D5E07F /* NSString+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Base64.m"; sourceTree = "<group>"; };
|
568
613
|
/* End PBXFileReference section */
|
569
614
|
|
570
615
|
/* Begin PBXFrameworksBuildPhase section */
|
@@ -572,6 +617,7 @@
|
|
572
617
|
isa = PBXFrameworksBuildPhase;
|
573
618
|
buildActionMask = 2147483647;
|
574
619
|
files = (
|
620
|
+
C5E068471728E4190056F1DD /* OpenAL.framework in Frameworks */,
|
575
621
|
C52562981705AE2000AC76A2 /* libsqlite3.dylib in Frameworks */,
|
576
622
|
C52562991705AE2000AC76A2 /* libxml2.dylib in Frameworks */,
|
577
623
|
C525629A1705AE2000AC76A2 /* libz.dylib in Frameworks */,
|
@@ -644,6 +690,7 @@
|
|
644
690
|
C52562951705AE2000AC76A2 /* libsqlite3.dylib */,
|
645
691
|
C52562961705AE2000AC76A2 /* libxml2.dylib */,
|
646
692
|
C52562971705AE2000AC76A2 /* libz.dylib */,
|
693
|
+
C5E068461728E4190056F1DD /* OpenAL.framework */,
|
647
694
|
C54DA67317140B0B00457BF3 /* CoreFoundation.framework */,
|
648
695
|
C52562691705ADF000AC76A2 /* Accelerate.framework */,
|
649
696
|
C525626A1705ADF000AC76A2 /* AudioToolbox.framework */,
|
@@ -778,9 +825,45 @@
|
|
778
825
|
path = InflectorKit;
|
779
826
|
sourceTree = "<group>";
|
780
827
|
};
|
828
|
+
C5BD35811728B2A700509984 /* DCIntrospect */ = {
|
829
|
+
isa = PBXGroup;
|
830
|
+
children = (
|
831
|
+
C5BD35821728B2A700509984 /* DCCrossHairView.h */,
|
832
|
+
C5BD35831728B2A700509984 /* DCCrossHairView.m */,
|
833
|
+
C5BD35841728B2A700509984 /* DCFrameView.h */,
|
834
|
+
C5BD35851728B2A700509984 /* DCFrameView.m */,
|
835
|
+
C5BD35861728B2A700509984 /* DCIntrospect.h */,
|
836
|
+
C5BD35871728B2A700509984 /* DCIntrospect.m */,
|
837
|
+
C5BD35881728B2A700509984 /* DCIntrospectSettings.h */,
|
838
|
+
C5BD35891728B2A700509984 /* DCStatusBarOverlay.h */,
|
839
|
+
C5BD358A1728B2A700509984 /* DCStatusBarOverlay.m */,
|
840
|
+
);
|
841
|
+
path = DCIntrospect;
|
842
|
+
sourceTree = "<group>";
|
843
|
+
};
|
844
|
+
C5E068A71728E6640056F1DD /* MyLauncher */ = {
|
845
|
+
isa = PBXGroup;
|
846
|
+
children = (
|
847
|
+
C5E068A81728E6640056F1DD /* CustomBadge.h */,
|
848
|
+
C5E068A91728E6640056F1DD /* CustomBadge.m */,
|
849
|
+
C5E068AA1728E6640056F1DD /* MyLauncherItem.h */,
|
850
|
+
C5E068AB1728E6640056F1DD /* MyLauncherItem.m */,
|
851
|
+
C5E068AC1728E6640056F1DD /* MyLauncherPageControl.h */,
|
852
|
+
C5E068AD1728E6640056F1DD /* MyLauncherPageControl.m */,
|
853
|
+
C5E068AE1728E6640056F1DD /* MyLauncherScrollView.h */,
|
854
|
+
C5E068AF1728E6640056F1DD /* MyLauncherScrollView.m */,
|
855
|
+
C5E068B01728E6640056F1DD /* MyLauncherView.h */,
|
856
|
+
C5E068B11728E6640056F1DD /* MyLauncherView.m */,
|
857
|
+
C5E068B21728E6640056F1DD /* MyLauncherViewController.h */,
|
858
|
+
C5E068B31728E6640056F1DD /* MyLauncherViewController.m */,
|
859
|
+
);
|
860
|
+
path = MyLauncher;
|
861
|
+
sourceTree = "<group>";
|
862
|
+
};
|
781
863
|
C5FAFCC8170B0EC300D83034 /* components */ = {
|
782
864
|
isa = PBXGroup;
|
783
865
|
children = (
|
866
|
+
C5E068A71728E6640056F1DD /* MyLauncher */,
|
784
867
|
C54DA67517140C7000457BF3 /* FXLabel */,
|
785
868
|
C5FAFCC9170B0EC300D83034 /* AwesomeMenu */,
|
786
869
|
C5FAFCDD170B0EC300D83034 /* CMPopTipView */,
|
@@ -1043,6 +1126,8 @@
|
|
1043
1126
|
C5FAFD59170B0EC300D83034 /* toolkit */ = {
|
1044
1127
|
isa = PBXGroup;
|
1045
1128
|
children = (
|
1129
|
+
C5FCC46A1728DAA300D5E07F /* AESCrypt-ObjC */,
|
1130
|
+
C5BD35811728B2A700509984 /* DCIntrospect */,
|
1046
1131
|
C5FAFEAC170B1A9700D83034 /* hpple */,
|
1047
1132
|
C5FAFD5A170B0EC300D83034 /* CocoaAsyncSocket */,
|
1048
1133
|
C5FAFD5D170B0EC300D83034 /* CocoaHTTPServer */,
|
@@ -1402,6 +1487,21 @@
|
|
1402
1487
|
path = hpple;
|
1403
1488
|
sourceTree = "<group>";
|
1404
1489
|
};
|
1490
|
+
C5FCC46A1728DAA300D5E07F /* AESCrypt-ObjC */ = {
|
1491
|
+
isa = PBXGroup;
|
1492
|
+
children = (
|
1493
|
+
C5FCC46C1728DAA300D5E07F /* AESCrypt.h */,
|
1494
|
+
C5FCC46D1728DAA300D5E07F /* AESCrypt.m */,
|
1495
|
+
C5FCC46E1728DAA300D5E07F /* NSData+Base64.h */,
|
1496
|
+
C5FCC46F1728DAA300D5E07F /* NSData+Base64.m */,
|
1497
|
+
C5FCC4701728DAA300D5E07F /* NSData+CommonCrypto.h */,
|
1498
|
+
C5FCC4711728DAA300D5E07F /* NSData+CommonCrypto.m */,
|
1499
|
+
C5FCC4721728DAA300D5E07F /* NSString+Base64.h */,
|
1500
|
+
C5FCC4731728DAA300D5E07F /* NSString+Base64.m */,
|
1501
|
+
);
|
1502
|
+
path = "AESCrypt-ObjC";
|
1503
|
+
sourceTree = "<group>";
|
1504
|
+
};
|
1405
1505
|
/* End PBXGroup section */
|
1406
1506
|
|
1407
1507
|
/* Begin PBXNativeTarget section */
|
@@ -1671,6 +1771,20 @@
|
|
1671
1771
|
C54DA6841714126000457BF3 /* AFRESTClient.m in Sources */,
|
1672
1772
|
C54DA6851714126000457BF3 /* NSString+InflectorKit.m in Sources */,
|
1673
1773
|
C54DA6861714126000457BF3 /* TTTStringInflector.m in Sources */,
|
1774
|
+
C5BD358B1728B2A700509984 /* DCCrossHairView.m in Sources */,
|
1775
|
+
C5BD358C1728B2A700509984 /* DCFrameView.m in Sources */,
|
1776
|
+
C5BD358D1728B2A700509984 /* DCIntrospect.m in Sources */,
|
1777
|
+
C5BD358E1728B2A700509984 /* DCStatusBarOverlay.m in Sources */,
|
1778
|
+
C5FCC4751728DAA300D5E07F /* AESCrypt.m in Sources */,
|
1779
|
+
C5FCC4761728DAA300D5E07F /* NSData+Base64.m in Sources */,
|
1780
|
+
C5FCC4771728DAA300D5E07F /* NSData+CommonCrypto.m in Sources */,
|
1781
|
+
C5FCC4781728DAA300D5E07F /* NSString+Base64.m in Sources */,
|
1782
|
+
C5E068B41728E6640056F1DD /* CustomBadge.m in Sources */,
|
1783
|
+
C5E068B51728E6640056F1DD /* MyLauncherItem.m in Sources */,
|
1784
|
+
C5E068B61728E6640056F1DD /* MyLauncherPageControl.m in Sources */,
|
1785
|
+
C5E068B71728E6640056F1DD /* MyLauncherScrollView.m in Sources */,
|
1786
|
+
C5E068B81728E6640056F1DD /* MyLauncherView.m in Sources */,
|
1787
|
+
C5E068B91728E6640056F1DD /* MyLauncherViewController.m in Sources */,
|
1674
1788
|
);
|
1675
1789
|
runOnlyForDeploymentPostprocessing = 0;
|
1676
1790
|
};
|
Binary file
|
@@ -7,6 +7,7 @@
|
|
7
7
|
//
|
8
8
|
|
9
9
|
#import "AppDelegate.h"
|
10
|
+
#import "DCIntrospect.h"
|
10
11
|
|
11
12
|
@implementation AppDelegate
|
12
13
|
|
@@ -23,10 +24,21 @@ static const int ddLogLevel = LOG_LEVEL_VERBOSE;
|
|
23
24
|
|
24
25
|
DDLogVerbose(@"Start App");
|
25
26
|
DLog(@"didFinishLaunching...");
|
27
|
+
|
26
28
|
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
27
|
-
// Override point for customization after application launch.
|
28
29
|
self.window.backgroundColor = [UIColor whiteColor];
|
29
30
|
[self.window makeKeyAndVisible];
|
31
|
+
|
32
|
+
// press space bar to toggle debug state
|
33
|
+
// press '?' to show help
|
34
|
+
// press 'o' to show outline
|
35
|
+
// press 'O' to show background
|
36
|
+
// press 'p' to show view properties
|
37
|
+
|
38
|
+
#if TARGET_IPHONE_SIMULATOR
|
39
|
+
[[DCIntrospect sharedIntrospector] start];
|
40
|
+
#endif
|
41
|
+
|
30
42
|
return YES;
|
31
43
|
}
|
32
44
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/*
|
2
|
+
CustomBadge.h
|
3
|
+
|
4
|
+
*** Description: ***
|
5
|
+
With this class you can draw a typical iOS badge indicator with a custom text on any view.
|
6
|
+
Please use the allocator customBadgeWithString the create a new badge.
|
7
|
+
In this version you can modfiy the color inside the badge (insetColor),
|
8
|
+
the color of the frame (frameColor), the color of the text and you can
|
9
|
+
tell the class if you want a frame around the badge.
|
10
|
+
|
11
|
+
*** License & Copyright ***
|
12
|
+
Created by Sascha Marc Paulus www.spaulus.com on 04/2011. Version 2.0
|
13
|
+
This tiny class can be used for free in private and commercial applications.
|
14
|
+
Please feel free to modify, extend or distribution this class.
|
15
|
+
If you modify it: Please send me your modified version of the class.
|
16
|
+
A commercial distribution of this class is not allowed.
|
17
|
+
|
18
|
+
If you have any questions please feel free to contact me (open@spaulus.com).
|
19
|
+
*/
|
20
|
+
|
21
|
+
|
22
|
+
#import <UIKit/UIKit.h>
|
23
|
+
#import <QuartzCore/QuartzCore.h>
|
24
|
+
|
25
|
+
@interface CustomBadge : UIView {
|
26
|
+
|
27
|
+
NSString *badgeText;
|
28
|
+
UIColor *badgeTextColor;
|
29
|
+
UIColor *badgeInsetColor;
|
30
|
+
UIColor *badgeFrameColor;
|
31
|
+
BOOL badgeFrame;
|
32
|
+
BOOL badgeShining;
|
33
|
+
CGFloat badgeCornerRoundness;
|
34
|
+
CGFloat badgeScaleFactor;
|
35
|
+
}
|
36
|
+
|
37
|
+
@property(nonatomic,strong) NSString *badgeText;
|
38
|
+
@property(nonatomic,strong) UIColor *badgeTextColor;
|
39
|
+
@property(nonatomic,strong) UIColor *badgeInsetColor;
|
40
|
+
@property(nonatomic,strong) UIColor *badgeFrameColor;
|
41
|
+
|
42
|
+
@property(nonatomic,readwrite) BOOL badgeFrame;
|
43
|
+
@property(nonatomic,readwrite) BOOL badgeShining;
|
44
|
+
|
45
|
+
@property(nonatomic,readwrite) CGFloat badgeCornerRoundness;
|
46
|
+
@property(nonatomic,readwrite) CGFloat badgeScaleFactor;
|
47
|
+
|
48
|
+
+ (CustomBadge*) customBadgeWithString:(NSString *)badgeString;
|
49
|
+
+ (CustomBadge*) customBadgeWithString:(NSString *)badgeString withStringColor:(UIColor*)stringColor withInsetColor:(UIColor*)insetColor withBadgeFrame:(BOOL)badgeFrameYesNo withBadgeFrameColor:(UIColor*)frameColor withScale:(CGFloat)scale withShining:(BOOL)shining;
|
50
|
+
- (void) autoBadgeSizeWithString:(NSString *)badgeString;
|
51
|
+
|
52
|
+
@end
|
@@ -0,0 +1,241 @@
|
|
1
|
+
/*
|
2
|
+
CustomBadge.m
|
3
|
+
|
4
|
+
*** Description: ***
|
5
|
+
With this class you can draw a typical iOS badge indicator with a custom text on any view.
|
6
|
+
Please use the allocator customBadgeWithString the create a new badge.
|
7
|
+
In this version you can modfiy the color inside the badge (insetColor),
|
8
|
+
the color of the frame (frameColor), the color of the text and you can
|
9
|
+
tell the class if you want a frame around the badge.
|
10
|
+
|
11
|
+
*** License & Copyright ***
|
12
|
+
Created by Sascha Marc Paulus www.spaulus.com on 04/2011. Version 2.0
|
13
|
+
This tiny class can be used for free in private and commercial applications.
|
14
|
+
Please feel free to modify, extend or distribution this class.
|
15
|
+
If you modify it: Please send me your modified version of the class.
|
16
|
+
A commercial distribution of this class is not allowed.
|
17
|
+
|
18
|
+
If you have any questions please feel free to contact me (open@spaulus.com).
|
19
|
+
*/
|
20
|
+
|
21
|
+
|
22
|
+
#import "CustomBadge.h"
|
23
|
+
|
24
|
+
@interface CustomBadge()
|
25
|
+
- (void) drawRoundedRectWithContext:(CGContextRef)context withRect:(CGRect)rect;
|
26
|
+
- (void) drawFrameWithContext:(CGContextRef)context withRect:(CGRect)rect;
|
27
|
+
@end
|
28
|
+
|
29
|
+
@implementation CustomBadge
|
30
|
+
|
31
|
+
@synthesize badgeText;
|
32
|
+
@synthesize badgeTextColor;
|
33
|
+
@synthesize badgeInsetColor;
|
34
|
+
@synthesize badgeFrameColor;
|
35
|
+
@synthesize badgeFrame;
|
36
|
+
@synthesize badgeCornerRoundness;
|
37
|
+
@synthesize badgeScaleFactor;
|
38
|
+
@synthesize badgeShining;
|
39
|
+
|
40
|
+
// I recommend to use the allocator customBadgeWithString
|
41
|
+
- (id) initWithString:(NSString *)badgeString withScale:(CGFloat)scale withShining:(BOOL)shining
|
42
|
+
{
|
43
|
+
self = [super initWithFrame:CGRectMake(0, 0, 25, 25)];
|
44
|
+
if(self!=nil) {
|
45
|
+
self.contentScaleFactor = [[UIScreen mainScreen] scale];
|
46
|
+
self.backgroundColor = [UIColor clearColor];
|
47
|
+
self.badgeText = badgeString;
|
48
|
+
self.badgeTextColor = [UIColor whiteColor];
|
49
|
+
self.badgeFrame = YES;
|
50
|
+
self.badgeFrameColor = [UIColor whiteColor];
|
51
|
+
self.badgeInsetColor = [UIColor redColor];
|
52
|
+
self.badgeCornerRoundness = 0.4;
|
53
|
+
self.badgeScaleFactor = scale;
|
54
|
+
self.badgeShining = shining;
|
55
|
+
[self autoBadgeSizeWithString:badgeString];
|
56
|
+
}
|
57
|
+
return self;
|
58
|
+
}
|
59
|
+
|
60
|
+
// I recommend to use the allocator customBadgeWithString
|
61
|
+
- (id) initWithString:(NSString *)badgeString withStringColor:(UIColor*)stringColor withInsetColor:(UIColor*)insetColor withBadgeFrame:(BOOL)badgeFrameYesNo withBadgeFrameColor:(UIColor*)frameColor withScale:(CGFloat)scale withShining:(BOOL)shining
|
62
|
+
{
|
63
|
+
self = [super initWithFrame:CGRectMake(0, 0, 25, 25)];
|
64
|
+
if(self!=nil) {
|
65
|
+
self.contentScaleFactor = [[UIScreen mainScreen] scale];
|
66
|
+
self.backgroundColor = [UIColor clearColor];
|
67
|
+
self.badgeText = badgeString;
|
68
|
+
self.badgeTextColor = stringColor;
|
69
|
+
self.badgeFrame = badgeFrameYesNo;
|
70
|
+
self.badgeFrameColor = frameColor;
|
71
|
+
self.badgeInsetColor = insetColor;
|
72
|
+
self.badgeCornerRoundness = 0.40;
|
73
|
+
self.badgeScaleFactor = scale;
|
74
|
+
self.badgeShining = shining;
|
75
|
+
[self autoBadgeSizeWithString:badgeString];
|
76
|
+
}
|
77
|
+
return self;
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
// Use this method if you want to change the badge text after the first rendering
|
82
|
+
- (void) autoBadgeSizeWithString:(NSString *)badgeString
|
83
|
+
{
|
84
|
+
CGSize retValue;
|
85
|
+
CGFloat rectWidth, rectHeight;
|
86
|
+
CGSize stringSize = [badgeString sizeWithFont:[UIFont boldSystemFontOfSize:12]];
|
87
|
+
CGFloat flexSpace;
|
88
|
+
if ([badgeString length]>=2) {
|
89
|
+
flexSpace = [badgeString length];
|
90
|
+
rectWidth = 25 + (stringSize.width + flexSpace); rectHeight = 25;
|
91
|
+
retValue = CGSizeMake(rectWidth*badgeScaleFactor, rectHeight*badgeScaleFactor);
|
92
|
+
} else {
|
93
|
+
retValue = CGSizeMake(25*badgeScaleFactor, 25*badgeScaleFactor);
|
94
|
+
}
|
95
|
+
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, retValue.width, retValue.height);
|
96
|
+
self.badgeText = badgeString;
|
97
|
+
[self setNeedsDisplay];
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
// Creates a Badge with a given Text
|
102
|
+
+ (CustomBadge*) customBadgeWithString:(NSString *)badgeString
|
103
|
+
{
|
104
|
+
return [[self alloc] initWithString:badgeString withScale:1.0 withShining:YES];
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
// Creates a Badge with a given Text, Text Color, Inset Color, Frame (YES/NO) and Frame Color
|
109
|
+
+ (CustomBadge*) customBadgeWithString:(NSString *)badgeString withStringColor:(UIColor*)stringColor withInsetColor:(UIColor*)insetColor withBadgeFrame:(BOOL)badgeFrameYesNo withBadgeFrameColor:(UIColor*)frameColor withScale:(CGFloat)scale withShining:(BOOL)shining
|
110
|
+
{
|
111
|
+
return [[self alloc] initWithString:badgeString withStringColor:stringColor withInsetColor:insetColor withBadgeFrame:badgeFrameYesNo withBadgeFrameColor:frameColor withScale:scale withShining:shining];
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
// Draws the Badge with Quartz
|
119
|
+
-(void) drawRoundedRectWithContext:(CGContextRef)context withRect:(CGRect)rect
|
120
|
+
{
|
121
|
+
CGContextSaveGState(context);
|
122
|
+
|
123
|
+
CGFloat radius = CGRectGetMaxY(rect)*self.badgeCornerRoundness;
|
124
|
+
CGFloat puffer = CGRectGetMaxY(rect)*0.10;
|
125
|
+
CGFloat maxX = CGRectGetMaxX(rect) - puffer;
|
126
|
+
CGFloat maxY = CGRectGetMaxY(rect) - puffer;
|
127
|
+
CGFloat minX = CGRectGetMinX(rect) + puffer;
|
128
|
+
CGFloat minY = CGRectGetMinY(rect) + puffer;
|
129
|
+
|
130
|
+
CGContextBeginPath(context);
|
131
|
+
CGContextSetFillColorWithColor(context, [self.badgeInsetColor CGColor]);
|
132
|
+
CGContextAddArc(context, maxX-radius, minY+radius, radius, M_PI+(M_PI/2), 0, 0);
|
133
|
+
CGContextAddArc(context, maxX-radius, maxY-radius, radius, 0, M_PI/2, 0);
|
134
|
+
CGContextAddArc(context, minX+radius, maxY-radius, radius, M_PI/2, M_PI, 0);
|
135
|
+
CGContextAddArc(context, minX+radius, minY+radius, radius, M_PI, M_PI+M_PI/2, 0);
|
136
|
+
CGContextSetShadowWithColor(context, CGSizeMake(1.0,1.0), 3, [[UIColor blackColor] CGColor]);
|
137
|
+
CGContextClosePath(context);
|
138
|
+
CGContextFillPath(context);
|
139
|
+
|
140
|
+
CGContextRestoreGState(context);
|
141
|
+
|
142
|
+
}
|
143
|
+
|
144
|
+
// Draws the Badge Shine with Quartz
|
145
|
+
-(void) drawShineWithContext:(CGContextRef)context withRect:(CGRect)rect
|
146
|
+
{
|
147
|
+
CGContextSaveGState(context);
|
148
|
+
|
149
|
+
CGFloat radius = CGRectGetMaxY(rect)*self.badgeCornerRoundness;
|
150
|
+
CGFloat puffer = CGRectGetMaxY(rect)*0.10;
|
151
|
+
CGFloat maxX = CGRectGetMaxX(rect) - puffer;
|
152
|
+
CGFloat maxY = CGRectGetMaxY(rect) - puffer;
|
153
|
+
CGFloat minX = CGRectGetMinX(rect) + puffer;
|
154
|
+
CGFloat minY = CGRectGetMinY(rect) + puffer;
|
155
|
+
CGContextBeginPath(context);
|
156
|
+
CGContextAddArc(context, maxX-radius, minY+radius, radius, M_PI+(M_PI/2), 0, 0);
|
157
|
+
CGContextAddArc(context, maxX-radius, maxY-radius, radius, 0, M_PI/2, 0);
|
158
|
+
CGContextAddArc(context, minX+radius, maxY-radius, radius, M_PI/2, M_PI, 0);
|
159
|
+
CGContextAddArc(context, minX+radius, minY+radius, radius, M_PI, M_PI+M_PI/2, 0);
|
160
|
+
CGContextClip(context);
|
161
|
+
//CGContextClosePath(context);
|
162
|
+
|
163
|
+
|
164
|
+
size_t num_locations = 2;
|
165
|
+
CGFloat locations[2] = { 0.0, 0.4 };
|
166
|
+
CGFloat components[8] = { 0.92, 0.92, 0.92, 1.0, 0.82, 0.82, 0.82, 0.4 };
|
167
|
+
|
168
|
+
CGColorSpaceRef cspace;
|
169
|
+
CGGradientRef gradient;
|
170
|
+
cspace = CGColorSpaceCreateDeviceRGB();
|
171
|
+
gradient = CGGradientCreateWithColorComponents (cspace, components, locations, num_locations);
|
172
|
+
|
173
|
+
CGPoint sPoint, ePoint;
|
174
|
+
sPoint.x = 0;
|
175
|
+
sPoint.y = 0;
|
176
|
+
ePoint.x = 0;
|
177
|
+
ePoint.y = maxY;
|
178
|
+
CGContextDrawLinearGradient (context, gradient, sPoint, ePoint, 0);
|
179
|
+
|
180
|
+
CGColorSpaceRelease(cspace);
|
181
|
+
CGGradientRelease(gradient);
|
182
|
+
|
183
|
+
CGContextRestoreGState(context);
|
184
|
+
}
|
185
|
+
|
186
|
+
|
187
|
+
// Draws the Badge Frame with Quartz
|
188
|
+
-(void) drawFrameWithContext:(CGContextRef)context withRect:(CGRect)rect
|
189
|
+
{
|
190
|
+
CGFloat radius = CGRectGetMaxY(rect)*self.badgeCornerRoundness;
|
191
|
+
CGFloat puffer = CGRectGetMaxY(rect)*0.10;
|
192
|
+
|
193
|
+
CGFloat maxX = CGRectGetMaxX(rect) - puffer;
|
194
|
+
CGFloat maxY = CGRectGetMaxY(rect) - puffer;
|
195
|
+
CGFloat minX = CGRectGetMinX(rect) + puffer;
|
196
|
+
CGFloat minY = CGRectGetMinY(rect) + puffer;
|
197
|
+
|
198
|
+
|
199
|
+
CGContextBeginPath(context);
|
200
|
+
CGFloat lineSize = 2;
|
201
|
+
if(self.badgeScaleFactor>1) {
|
202
|
+
lineSize += self.badgeScaleFactor*0.25;
|
203
|
+
}
|
204
|
+
CGContextSetLineWidth(context, lineSize);
|
205
|
+
CGContextSetStrokeColorWithColor(context, [self.badgeFrameColor CGColor]);
|
206
|
+
CGContextAddArc(context, maxX-radius, minY+radius, radius, M_PI+(M_PI/2), 0, 0);
|
207
|
+
CGContextAddArc(context, maxX-radius, maxY-radius, radius, 0, M_PI/2, 0);
|
208
|
+
CGContextAddArc(context, minX+radius, maxY-radius, radius, M_PI/2, M_PI, 0);
|
209
|
+
CGContextAddArc(context, minX+radius, minY+radius, radius, M_PI, M_PI+M_PI/2, 0);
|
210
|
+
CGContextClosePath(context);
|
211
|
+
CGContextStrokePath(context);
|
212
|
+
}
|
213
|
+
|
214
|
+
|
215
|
+
- (void)drawRect:(CGRect)rect {
|
216
|
+
|
217
|
+
CGContextRef context = UIGraphicsGetCurrentContext();
|
218
|
+
[self drawRoundedRectWithContext:context withRect:rect];
|
219
|
+
|
220
|
+
if(self.badgeShining) {
|
221
|
+
[self drawShineWithContext:context withRect:rect];
|
222
|
+
}
|
223
|
+
|
224
|
+
if (self.badgeFrame) {
|
225
|
+
[self drawFrameWithContext:context withRect:rect];
|
226
|
+
}
|
227
|
+
|
228
|
+
if ([self.badgeText length]>0) {
|
229
|
+
[badgeTextColor set];
|
230
|
+
CGFloat sizeOfFont = 13.5*badgeScaleFactor;
|
231
|
+
if ([self.badgeText length]<2) {
|
232
|
+
sizeOfFont += sizeOfFont*0.20;
|
233
|
+
}
|
234
|
+
UIFont *textFont = [UIFont boldSystemFontOfSize:sizeOfFont];
|
235
|
+
CGSize textSize = [self.badgeText sizeWithFont:textFont];
|
236
|
+
[self.badgeText drawAtPoint:CGPointMake((rect.size.width/2-textSize.width/2), (rect.size.height/2-textSize.height/2)) withFont:textFont];
|
237
|
+
}
|
238
|
+
|
239
|
+
}
|
240
|
+
|
241
|
+
@end
|