diff --git a/AwesomeMenu.gif b/AwesomeMenu.gif new file mode 100644 index 0000000..d4c8f00 Binary files /dev/null and b/AwesomeMenu.gif differ diff --git a/AwesomeMenu.xcodeproj/project.pbxproj b/AwesomeMenu.xcodeproj/project.pbxproj index 9de0973..5da37bd 100644 --- a/AwesomeMenu.xcodeproj/project.pbxproj +++ b/AwesomeMenu.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 264B898B1BD6F35900B7DF52 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 264B898A1BD6F35900B7DF52 /* Main.storyboard */; settings = {ASSET_TAGS = (); }; }; + 264B898D1BD6F36600B7DF52 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 264B898C1BD6F36600B7DF52 /* Launch.storyboard */; settings = {ASSET_TAGS = (); }; }; + 264B89901BD6F3F800B7DF52 /* AwesomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 264B898F1BD6F3F800B7DF52 /* AwesomeViewController.m */; settings = {ASSET_TAGS = (); }; }; 5C03649D1488A5D4000CE00F /* bg-addbutton-highlighted.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C03648A1488A5D4000CE00F /* bg-addbutton-highlighted.png */; }; 5C03649E1488A5D4000CE00F /* bg-addbutton-highlighted@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C03648B1488A5D4000CE00F /* bg-addbutton-highlighted@2x.png */; }; 5C03649F1488A5D4000CE00F /* bg-addbutton.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C03648C1488A5D4000CE00F /* bg-addbutton.png */; }; @@ -30,10 +33,13 @@ 5C5949CA153ACC510023B034 /* AwesomeMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C5949C7153ACC510023B034 /* AwesomeMenu.m */; }; 5C5949CB153ACC510023B034 /* AwesomeMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C5949C9153ACC510023B034 /* AwesomeMenuItem.m */; }; 5C93DC61148673F2003029CA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C93DC60148673F2003029CA /* QuartzCore.framework */; }; - DCDD5EA716E5B2A1005D7B61 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DCDD5EA616E5B2A1005D7B61 /* Default-568h@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 264B898A1BD6F35900B7DF52 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = ../Main.storyboard; sourceTree = ""; }; + 264B898C1BD6F36600B7DF52 /* Launch.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Launch.storyboard; path = ../Launch.storyboard; sourceTree = ""; }; + 264B898E1BD6F3F800B7DF52 /* AwesomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AwesomeViewController.h; sourceTree = ""; }; + 264B898F1BD6F3F800B7DF52 /* AwesomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AwesomeViewController.m; sourceTree = ""; }; 5C03648A1488A5D4000CE00F /* bg-addbutton-highlighted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bg-addbutton-highlighted.png"; sourceTree = ""; }; 5C03648B1488A5D4000CE00F /* bg-addbutton-highlighted@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bg-addbutton-highlighted@2x.png"; sourceTree = ""; }; 5C03648C1488A5D4000CE00F /* bg-addbutton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bg-addbutton.png"; sourceTree = ""; }; @@ -63,7 +69,6 @@ 5C5949C8153ACC510023B034 /* AwesomeMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AwesomeMenuItem.h; sourceTree = ""; }; 5C5949C9153ACC510023B034 /* AwesomeMenuItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AwesomeMenuItem.m; sourceTree = ""; }; 5C93DC60148673F2003029CA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - DCDD5EA616E5B2A1005D7B61 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -105,7 +110,6 @@ 5C3FF3541486564E0098EE93 = { isa = PBXGroup; children = ( - DCDD5EA616E5B2A1005D7B61 /* Default-568h@2x.png */, 5C3FF3691486564E0098EE93 /* AwesomeMenu */, 5C3FF3621486564E0098EE93 /* Frameworks */, 5C3FF3601486564E0098EE93 /* Products */, @@ -134,10 +138,14 @@ 5C3FF3691486564E0098EE93 /* AwesomeMenu */ = { isa = PBXGroup; children = ( - 5C0364891488A5D4000CE00F /* Images */, 5C5949C5153ACC510023B034 /* AwesomeMenu */, + 5C0364891488A5D4000CE00F /* Images */, + 264B898C1BD6F36600B7DF52 /* Launch.storyboard */, + 264B898A1BD6F35900B7DF52 /* Main.storyboard */, 5C3FF3721486564E0098EE93 /* AppDelegate.h */, 5C3FF3731486564E0098EE93 /* AppDelegate.m */, + 264B898E1BD6F3F800B7DF52 /* AwesomeViewController.h */, + 264B898F1BD6F3F800B7DF52 /* AwesomeViewController.m */, 5C3FF36A1486564E0098EE93 /* Supporting Files */, ); path = AwesomeMenu; @@ -191,7 +199,7 @@ 5C3FF3561486564E0098EE93 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0460; + LastUpgradeCheck = 0700; }; buildConfigurationList = 5C3FF3591486564E0098EE93 /* Build configuration list for PBXProject "AwesomeMenu" */; compatibilityVersion = "Xcode 3.2"; @@ -221,16 +229,17 @@ 5C03649F1488A5D4000CE00F /* bg-addbutton.png in Resources */, 5C0364A01488A5D4000CE00F /* bg-addbutton@2x.png in Resources */, 5C0364A11488A5D4000CE00F /* bg-menuitem-highlighted.png in Resources */, + 264B898B1BD6F35900B7DF52 /* Main.storyboard in Resources */, 5C0364A21488A5D4000CE00F /* bg-menuitem-highlighted@2x.png in Resources */, 5C0364A31488A5D4000CE00F /* bg-menuitem.png in Resources */, 5C0364A41488A5D4000CE00F /* bg-menuitem@2x.png in Resources */, 5C0364A51488A5D4000CE00F /* icon-plus-highlighted.png in Resources */, + 264B898D1BD6F36600B7DF52 /* Launch.storyboard in Resources */, 5C0364A61488A5D4000CE00F /* icon-plus-highlighted@2x.png in Resources */, 5C0364A71488A5D4000CE00F /* icon-plus.png in Resources */, 5C0364A81488A5D4000CE00F /* icon-plus@2x.png in Resources */, 5C0364A91488A5D4000CE00F /* icon-star.png in Resources */, 5C0364AA1488A5D4000CE00F /* icon-star@2x.png in Resources */, - DCDD5EA716E5B2A1005D7B61 /* Default-568h@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -245,6 +254,7 @@ 5C3FF3741486564E0098EE93 /* AppDelegate.m in Sources */, 5C5949CA153ACC510023B034 /* AwesomeMenu.m in Sources */, 5C5949CB153ACC510023B034 /* AwesomeMenuItem.m in Sources */, + 264B89901BD6F3F800B7DF52 /* AwesomeViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -266,16 +276,21 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -283,11 +298,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 5.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -296,19 +315,26 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 5.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; @@ -320,11 +346,13 @@ 5C3FF3781486564E0098EE93 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AwesomeMenu/AwesomeMenu-Prefix.pch"; INFOPLIST_FILE = "AwesomeMenu/AwesomeMenu-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.lunaapp.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; RUN_CLANG_STATIC_ANALYZER = YES; WARNING_CFLAGS = "-Wall"; @@ -335,11 +363,13 @@ 5C3FF3791486564E0098EE93 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AwesomeMenu/AwesomeMenu-Prefix.pch"; INFOPLIST_FILE = "AwesomeMenu/AwesomeMenu-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.lunaapp.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; RUN_CLANG_STATIC_ANALYZER = YES; WARNING_CFLAGS = "-Wall"; diff --git a/AwesomeMenu/AppDelegate.h b/AwesomeMenu/AppDelegate.h index 3b65818..32b90f9 100644 --- a/AwesomeMenu/AppDelegate.h +++ b/AwesomeMenu/AppDelegate.h @@ -7,8 +7,8 @@ // #import -#import "AwesomeMenu.h" -@interface AppDelegate : UIResponder + +@interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; diff --git a/AwesomeMenu/AppDelegate.m b/AwesomeMenu/AppDelegate.m index 9331adb..33201fe 100644 --- a/AwesomeMenu/AppDelegate.m +++ b/AwesomeMenu/AppDelegate.m @@ -12,128 +12,9 @@ @implementation AppDelegate @synthesize window = _window; - - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.backgroundColor = [UIColor whiteColor]; - - UIImage *storyMenuItemImage = [UIImage imageNamed:@"bg-menuitem.png"]; - UIImage *storyMenuItemImagePressed = [UIImage imageNamed:@"bg-menuitem-highlighted.png"]; - - UIImage *starImage = [UIImage imageNamed:@"icon-star.png"]; - - // Default Menu - - AwesomeMenuItem *starMenuItem1 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem2 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem3 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem4 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem5 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem6 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem7 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem8 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem9 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - - NSArray *menuItems = [NSArray arrayWithObjects:starMenuItem1, starMenuItem2, starMenuItem3, starMenuItem4, starMenuItem5, starMenuItem6, starMenuItem7,starMenuItem8,starMenuItem9, nil]; - - AwesomeMenuItem *startItem = [[AwesomeMenuItem alloc] initWithImage:[UIImage imageNamed:@"bg-addbutton.png"] - highlightedImage:[UIImage imageNamed:@"bg-addbutton-highlighted.png"] - ContentImage:[UIImage imageNamed:@"icon-plus.png"] - highlightedContentImage:[UIImage imageNamed:@"icon-plus-highlighted.png"]]; - - AwesomeMenu *menu = [[AwesomeMenu alloc] initWithFrame:self.window.bounds startItem:startItem menuItems:menuItems]; - menu.delegate = self; - - - - /* Path-like customization - - AwesomeMenuItem *starMenuItem1 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem2 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem3 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem4 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - AwesomeMenuItem *starMenuItem5 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage - highlightedImage:storyMenuItemImagePressed - ContentImage:starImage - highlightedContentImage:nil]; - - NSArray *menus = [NSArray arrayWithObjects:starMenuItem1, starMenuItem2, starMenuItem3, starMenuItem4, starMenuItem5, nil]; - - AwesomeMenuItem *startItem = [[AwesomeMenuItem alloc] initWithImage:[UIImage imageNamed:@"bg-addbutton.png"] - highlightedImage:[UIImage imageNamed:@"bg-addbutton-highlighted.png"] - ContentImage:[UIImage imageNamed:@"icon-plus.png"] - highlightedContentImage:[UIImage imageNamed:@"icon-plus-highlighted.png"]]; - - AwesomeMenu *menu = [[AwesomeMenu alloc] initWithFrame:self.window.bounds startItem:startItem optionMenus:menus]; - menu.delegate = self; - - menu.menuWholeAngle = M_PI_2; - menu.farRadius = 110.0f; - menu.endRadius = 100.0f; - menu.nearRadius = 90.0f; - menu.animationDuration = 0.3f; - menu.startPoint = CGPointMake(50.0, 410.0); - - */ - - [self.window addSubview:menu]; - [self.window makeKeyAndVisible]; +// [self.window makeKeyAndVisible]; return YES; } - - -/* ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇ */ -/* ⬇⬇⬇⬇⬇⬇ GET RESPONSE OF MENU ⬇⬇⬇⬇⬇⬇ */ -/* ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇ */ - -- (void)awesomeMenu:(AwesomeMenu *)menu didSelectIndex:(NSInteger)idx -{ - NSLog(@"Select the index : %d",idx); -} -- (void)awesomeMenuDidFinishAnimationClose:(AwesomeMenu *)menu { - NSLog(@"Menu was closed!"); -} -- (void)awesomeMenuDidFinishAnimationOpen:(AwesomeMenu *)menu { - NSLog(@"Menu is open!"); -} @end diff --git a/AwesomeMenu/AwesomeMenu-Info.plist b/AwesomeMenu/AwesomeMenu-Info.plist index d9e2d10..8dbbcd5 100644 --- a/AwesomeMenu/AwesomeMenu-Info.plist +++ b/AwesomeMenu/AwesomeMenu-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFiles CFBundleIdentifier - com.lunaapp.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -26,6 +26,10 @@ 1.0 LSRequiresIPhoneOS + UILaunchStoryboardName + Launch + UIMainStoryboardFile + Main UIRequiredDeviceCapabilities armv7 diff --git a/AwesomeMenu/AwesomeMenu/AwesomeMenu.m b/AwesomeMenu/AwesomeMenu/AwesomeMenu.m index c2417e4..10d1b8b 100644 --- a/AwesomeMenu/AwesomeMenu/AwesomeMenu.m +++ b/AwesomeMenu/AwesomeMenu/AwesomeMenu.m @@ -7,13 +7,9 @@ // #import "AwesomeMenu.h" -#import -static CGFloat const kAwesomeMenuDefaultNearRadius = 110.0f; -static CGFloat const kAwesomeMenuDefaultEndRadius = 120.0f; -static CGFloat const kAwesomeMenuDefaultFarRadius = 140.0f; -static CGFloat const kAwesomeMenuDefaultStartPointX = 160.0; -static CGFloat const kAwesomeMenuDefaultStartPointY = 240.0; +@import QuartzCore; + static CGFloat const kAwesomeMenuDefaultTimeOffset = 0.036f; static CGFloat const kAwesomeMenuDefaultRotateAngle = 0.0; static CGFloat const kAwesomeMenuDefaultMenuWholeAngle = M_PI * 2; @@ -53,14 +49,17 @@ - (id)initWithFrame:(CGRect)frame startItem:(AwesomeMenuItem*)startItem menuItem { self = [super initWithFrame:frame]; if (self) { + CGFloat width = CGRectGetWidth(frame); + CGFloat height = CGRectGetHeight(frame); + self.backgroundColor = [UIColor clearColor]; - self.nearRadius = kAwesomeMenuDefaultNearRadius; - self.endRadius = kAwesomeMenuDefaultEndRadius; - self.farRadius = kAwesomeMenuDefaultFarRadius; + self.nearRadius = width * 0.3; + self.endRadius = width * 0.4; + self.farRadius = width * 0.5; self.timeOffset = kAwesomeMenuDefaultTimeOffset; self.rotateAngle = kAwesomeMenuDefaultRotateAngle; self.menuWholeAngle = kAwesomeMenuDefaultMenuWholeAngle; - self.startPoint = CGPointMake(kAwesomeMenuDefaultStartPointX, kAwesomeMenuDefaultStartPointY); + self.startPoint = CGPointMake(width / 2.0, height / 2.0); self.expandRotation = kAwesomeMenuDefaultExpandRotation; self.closeRotation = kAwesomeMenuDefaultCloseRotation; self.animationDuration = kAwesomeMenuDefaultAnimationDuration; @@ -92,41 +91,46 @@ - (void)setStartPoint:(CGPoint)aPoint #pragma mark - Images -- (void)setImage:(UIImage *)image { +- (void)setImage:(UIImage *)image +{ self.startButton.image = image; } -- (UIImage*)image { +- (UIImage*)image +{ return self.startButton.image; } -- (void)setHighlightedImage:(UIImage *)highlightedImage { +- (void)setHighlightedImage:(UIImage *)highlightedImage +{ self.startButton.highlightedImage = highlightedImage; } -- (UIImage*)highlightedImage { +- (UIImage*)highlightedImage +{ return self.startButton.highlightedImage; } - -- (void)setContentImage:(UIImage *)contentImage { +- (void)setContentImage:(UIImage *)contentImage +{ self.startButton.contentImageView.image = contentImage; } -- (UIImage*)contentImage { +- (UIImage*)contentImage +{ return self.startButton.contentImageView.image; } -- (void)setHighlightedContentImage:(UIImage *)highlightedContentImage { +- (void)setHighlightedContentImage:(UIImage *)highlightedContentImage +{ self.startButton.contentImageView.highlightedImage = highlightedContentImage; } -- (UIImage*)highlightedContentImage { +- (UIImage*)highlightedContentImage +{ return self.startButton.contentImageView.highlightedImage; } - - #pragma mark - UIView's methods - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event @@ -162,6 +166,7 @@ - (void)AwesomeMenuItemTouchesBegan:(AwesomeMenuItem *)item self.expanded = ![self isExpanded]; } } + - (void)AwesomeMenuItemTouchesEnd:(AwesomeMenuItem *)item { // exclude the "add" button @@ -245,7 +250,8 @@ - (void)close [self setExpanded:NO]; } -- (void)_setMenu { +- (void)_setMenu +{ NSUInteger count = [self.menuItems count]; for (int i = 0; i < count; i ++) { @@ -273,6 +279,7 @@ - (BOOL)isExpanded { return _expanded; } + - (void)setExpanded:(BOOL)expanded { if (expanded) { @@ -403,7 +410,9 @@ - (void)_closeAnimation _flag --; } -- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { + +- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag +{ if([[anim valueForKey:@"id"] isEqual:@"lastAnimation"]) { if(self.delegate && [self.delegate respondsToSelector:@selector(awesomeMenuDidFinishAnimationClose:)]){ [self.delegate awesomeMenuDidFinishAnimationClose:self]; @@ -415,6 +424,7 @@ - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { } } } + - (CAAnimationGroup *)_blowupAnimationAtPoint:(CGPoint)p { CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; @@ -455,5 +465,4 @@ - (CAAnimationGroup *)_shrinkAnimationAtPoint:(CGPoint)p return animationgroup; } - @end diff --git a/AwesomeMenu/AwesomeViewController.h b/AwesomeMenu/AwesomeViewController.h new file mode 100644 index 0000000..e753bc8 --- /dev/null +++ b/AwesomeMenu/AwesomeViewController.h @@ -0,0 +1,13 @@ +// +// AwesomeViewController.h +// AwesomeMenu +// +// Created by Brennan Stehling on 10/20/15. +// +// + +@import UIKit; + +@interface AwesomeViewController : UIViewController + +@end diff --git a/AwesomeMenu/AwesomeViewController.m b/AwesomeMenu/AwesomeViewController.m new file mode 100644 index 0000000..11c3723 --- /dev/null +++ b/AwesomeMenu/AwesomeViewController.m @@ -0,0 +1,138 @@ +// +// AwesomeViewController.m +// AwesomeMenu +// +// Created by Brennan Stehling on 10/20/15. +// +// + +#import "AwesomeViewController.h" + +#import "AwesomeMenu.h" + +@interface AwesomeViewController () + +@end + +@implementation AwesomeViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + + UIImage *storyMenuItemImage = [UIImage imageNamed:@"bg-menuitem.png"]; + UIImage *storyMenuItemImagePressed = [UIImage imageNamed:@"bg-menuitem-highlighted.png"]; + + UIImage *starImage = [UIImage imageNamed:@"icon-star.png"]; + + // Default Menu + + AwesomeMenuItem *starMenuItem1 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem2 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem3 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem4 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem5 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem6 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem7 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem8 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem9 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + + NSArray *menuItems = [NSArray arrayWithObjects:starMenuItem1, starMenuItem2, starMenuItem3, starMenuItem4, starMenuItem5, starMenuItem6, starMenuItem7,starMenuItem8,starMenuItem9, nil]; + + AwesomeMenuItem *startItem = [[AwesomeMenuItem alloc] initWithImage:[UIImage imageNamed:@"bg-addbutton.png"] + highlightedImage:[UIImage imageNamed:@"bg-addbutton-highlighted.png"] + ContentImage:[UIImage imageNamed:@"icon-plus.png"] + highlightedContentImage:[UIImage imageNamed:@"icon-plus-highlighted.png"]]; + + AwesomeMenu *menu = [[AwesomeMenu alloc] initWithFrame:self.view.bounds startItem:startItem menuItems:menuItems]; + menu.delegate = self; + + /* Path-like customization + + AwesomeMenuItem *starMenuItem1 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem2 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem3 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem4 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + AwesomeMenuItem *starMenuItem5 = [[AwesomeMenuItem alloc] initWithImage:storyMenuItemImage + highlightedImage:storyMenuItemImagePressed + ContentImage:starImage + highlightedContentImage:nil]; + + NSArray *menus = [NSArray arrayWithObjects:starMenuItem1, starMenuItem2, starMenuItem3, starMenuItem4, starMenuItem5, nil]; + + AwesomeMenuItem *startItem = [[AwesomeMenuItem alloc] initWithImage:[UIImage imageNamed:@"bg-addbutton.png"] + highlightedImage:[UIImage imageNamed:@"bg-addbutton-highlighted.png"] + ContentImage:[UIImage imageNamed:@"icon-plus.png"] + highlightedContentImage:[UIImage imageNamed:@"icon-plus-highlighted.png"]]; + + AwesomeMenu *menu = [[AwesomeMenu alloc] initWithFrame:self.window.bounds startItem:startItem optionMenus:menus]; + menu.delegate = self; + + menu.menuWholeAngle = M_PI_2; + menu.farRadius = 110.0f; + menu.endRadius = 100.0f; + menu.nearRadius = 90.0f; + menu.animationDuration = 0.3f; + menu.startPoint = CGPointMake(50.0, 410.0); + + */ + + [self.view addSubview:menu]; +} + +/* ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇ */ +/* ⬇⬇⬇⬇⬇⬇ GET RESPONSE OF MENU ⬇⬇⬇⬇⬇⬇ */ +/* ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇ */ + +- (void)awesomeMenu:(AwesomeMenu *)menu didSelectIndex:(NSInteger)idx { + NSLog(@"Select the index : %li", (long)idx); +} + +- (void)awesomeMenuDidFinishAnimationClose:(AwesomeMenu *)menu { + NSLog(@"Menu was closed!"); +} + +- (void)awesomeMenuDidFinishAnimationOpen:(AwesomeMenu *)menu { + NSLog(@"Menu is open!"); +} + +@end diff --git a/Default-568h@2x.png b/Default-568h@2x.png deleted file mode 100644 index 0891b7a..0000000 Binary files a/Default-568h@2x.png and /dev/null differ diff --git a/Launch.storyboard b/Launch.storyboard new file mode 100644 index 0000000..d9e1c01 --- /dev/null +++ b/Launch.storyboard @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Main.storyboard b/Main.storyboard new file mode 100644 index 0000000..f5b6e5a --- /dev/null +++ b/Main.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index 454d4fe..597f7dc 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ AwesomeMenu is a menu with the same look as the story menu of [Path](https://pat --- +![demo](https://github.com/brennanMKE/AwesomeMenu/raw/master/AwesomeMenu.gif) + **How To**: @@ -70,6 +72,3 @@ Sina Weibo: [@LeveyZhu](http://weibo.com/leveyzhu) Thanks for [pashields](https://github.com/pashields) providing the [youtube demo](http://www.youtube.com/watch?v=vddaYMtETjo) :) Thanks for [acoomans](https://github.com/acoomans/QuadCurveMenu) for the options. - - -![screenshots](http://k.minus.com/ib1kHc4lnLB8bd.gif) ![screenshots](http://k.minus.com/iovTFVTQQ192K.gif) ![screenshots](http://k.minus.com/i4BrO2tfCJxzk.gif)