Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

SphereMenu.xcodeproj/project.xcworkspace/xcuserdata/YH.xcuserdatad/UserInterfaceState.xcuserstate

SphereMenu.xcodeproj/xcuserdata/YH.xcuserdatad/xcschemes/SphereMenu.xcscheme

SphereMenu.xcodeproj/xcuserdata/YH.xcuserdatad/xcschemes/xcschememanagement.plist
27 changes: 22 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,31 @@ SphereMenu is a fun menu powered by `UIDynamicAnimator`. Inspired by [Sphere](ht
To use SpereMenu, create a `SpereMenu` like this

```objective-c
UIImage *startImage = [UIImage imageNamed:@"start"];
[SphereMenu showSphereMenuWithAnchorView:self.btn
anchorImage:[UIImage imageNamed:@"picked"]
sphereMenus:^NSArray *{

UIImage *image1 = [UIImage imageNamed:@"icon-twitter"];
UIImage *image2 = [UIImage imageNamed:@"icon-email"];
UIImage *image3 = [UIImage imageNamed:@"icon-facebook"];
NSArray *images = @[image1, image2, image3];
SphereMenu *sphereMenu = [[SphereMenu alloc] initWithStartPoint:CGPointMake(160, 320) startImage:startImage submenuImages:images];
sphereMenu.delegate = self;
[self.view addSubview:sphereMenu];

UIImage *image4 = [UIImage imageNamed:@"icon-twitter"];
UIImage *image5 = [UIImage imageNamed:@"icon-email"];
UIImage *image6 = [UIImage imageNamed:@"icon-facebook"];

NSArray *images = @[@{key_sphere_menu_image:image1, key_sphere_menu_title:@"我想买"},
@{key_sphere_menu_image:image2, key_sphere_menu_title:@"大规模有"},
@{key_sphere_menu_image:image3, key_sphere_menu_title:@"暗黑破神"},
@{key_sphere_menu_image:image4, key_sphere_menu_title:@"大规木有"},
@{key_sphere_menu_image:image5, key_sphere_menu_title:@"大规木有"},
@{key_sphere_menu_image:image6, key_sphere_menu_title:@"模有木有"}];

return images;
}
pickedMenu:^(NSInteger index, UIView *menu) {

NSLog(@"picked index = %ld", index);
}];
```

## A Quick Peek
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
</Bucket>
36 changes: 28 additions & 8 deletions SphereMenu/Base.lproj/Main_iPhone.storyboard
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5023" systemVersion="13A603" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="14F1605" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
</dependencies>
<scenes>
<!--class Prefix:identifier View Controller-->
<!--View Controller-->
<scene sceneID="ufC-wZ-h7g">
<objects>
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
Expand All @@ -15,16 +16,35 @@
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Fq7-3c-kXO">
<rect key="frame" x="126" y="492" width="68" height="68"/>
<constraints>
<constraint firstAttribute="height" constant="68" id="4nk-9X-uwO"/>
<constraint firstAttribute="width" constant="68" id="oC7-U3-VSb"/>
</constraints>
<state key="normal" image="start"/>
<connections>
<action selector="startBtnAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="P6C-T4-SFQ"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="2fi-mo-0CV" firstAttribute="top" secondItem="Fq7-3c-kXO" secondAttribute="bottom" constant="8" id="FEq-hv-cs8"/>
<constraint firstItem="Fq7-3c-kXO" firstAttribute="centerX" secondItem="kh9-bI-dsS" secondAttribute="centerX" id="Y4b-Ea-Vef"/>
</constraints>
</view>
<connections>
<outlet property="btn" destination="Fq7-3c-kXO" id="Nps-4g-sex"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="419" y="322"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer>
<resources>
<image name="start" width="68" height="68"/>
</resources>
</document>
20 changes: 20 additions & 0 deletions SphereMenu/Images.xcassets/AppIcon.appiconset/Contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,31 @@
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "29x29",
Expand Down Expand Up @@ -44,6 +59,11 @@
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
}
],
"info" : {
Expand Down
6 changes: 6 additions & 0 deletions SphereMenu/Images.xcassets/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
8 changes: 6 additions & 2 deletions SphereMenu/Images.xcassets/icon-email.imageset/Contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "icon-email@2x.png"
"filename" : "icon-email@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "icon-facebook@2x.png"
"filename" : "icon-facebook@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "icon-twitter@2x.png"
"filename" : "icon-twitter@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
Expand Down
21 changes: 21 additions & 0 deletions SphereMenu/Images.xcassets/picked.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "start_selected@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions SphereMenu/Images.xcassets/start.imageset/Contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "start@2x.png"
"filename" : "start@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
Expand Down
5 changes: 3 additions & 2 deletions SphereMenu/Launch Screen.xib
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9532" systemVersion="14F1605" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
<objects>
Expand Down
24 changes: 8 additions & 16 deletions SphereMenu/SphereMenu/SphereMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,21 @@
// SphereMenu.h
// SphereMenu
//
// Created by Tu You on 14-8-24.
// Copyright (c) 2014年 TU YOU. All rights reserved.
//

#import <UIKit/UIKit.h>

@protocol SphereMenuDelegate <NSObject>

- (void)sphereDidSelected:(int)index;

@end

@interface SphereMenu : UIView
typedef void (^SpherePickedMenu)(NSInteger index, UIView *menu);

- (instancetype)initWithStartPoint:(CGPoint)startPoint
startImage:(UIImage *)startImage
submenuImages:(NSArray *)images;
#define key_sphere_menu_image @"img"
#define key_sphere_menu_title @"title"

@property (nonatomic, weak) id<SphereMenuDelegate> delegate;

@property (nonatomic, assign) CGFloat angle;
@property (nonatomic, assign) CGFloat sphereDamping;
@property (nonatomic, assign) CGFloat sphereLength;
@interface SphereMenu : UIView

+ (instancetype)showSphereMenuWithAnchorView:(UIView *)anchorView
anchorImage:(UIImage *)anchorImg
sphereMenus:(NSArray *(^)())menus
pickedMenu:(SpherePickedMenu)completion;

@end
Loading