Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swift 2.0 #1

Merged
merged 32 commits into from
Sep 12, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
dd463e5
Changes for Swift 2.0
FlexMonkey Jul 2, 2015
aeb37d2
Value sliders work in progress
FlexMonkey Jul 3, 2015
5c43058
Work in progress: value sliders
FlexMonkey Jul 4, 2015
1c778fe
Plugged in a color controls filter to demo sliders with brightness, s…
FlexMonkey Jul 4, 2015
ad0520b
Update README.md
FlexMonkey Jul 4, 2015
d389f7f
Update README.md
FlexMonkey Jul 4, 2015
0a816dc
Fix slider bug at extremes of range.
FlexMonkey Jul 7, 2015
5fc553d
Fix slider bug at extremes of range.
FlexMonkey Jul 7, 2015
10fd094
Merge remote-tracking branch 'origin/Swift-2.0' into Swift-2.0
Jul 7, 2015
e10baf1
Got layoutMode FMMarkingMenuLayoutMode.SemiCircular working!
FlexMonkey Jul 7, 2015
43e324f
Added launchMode property of type FMMarkingMenuLaunchMode - menu can …
FlexMonkey Jul 8, 2015
7d65ad8
Value sliders match their radius to that of the touch distance. Added…
FlexMonkey Jul 10, 2015
1170c84
Some minor tweaks...
FlexMonkey Jul 11, 2015
e42ada9
Reorganise demo menu items.
FlexMonkey Jul 13, 2015
f82163d
Slightly hacky solution for eliminating delay when opening menu for f…
FlexMonkey Jul 13, 2015
f19c4d5
Turn demo back on
FlexMonkey Jul 13, 2015
63cde8e
Merge remote-tracking branch 'origin/Swift-2.0' into Swift-2.0
Jul 13, 2015
6d3a64a
Tweaks to shadows for slider mode
FlexMonkey Jul 13, 2015
1e4387a
changed photo
FlexMonkey Jul 14, 2015
d1c3dd3
changed photo
FlexMonkey Jul 14, 2015
6ae766e
Merge remote-tracking branch 'origin/Swift-2.0' into Swift-2.0
FlexMonkey Jul 14, 2015
874611b
Some refactoring.
FlexMonkey Jul 14, 2015
8c0504c
New convenience init to FMMarkingMenuItem for easy creation of sliders
FlexMonkey Jul 14, 2015
eed9d7a
Tidy up source code
FlexMonkey Jul 14, 2015
9d03d5a
Support for selection and categories in marking menu items.
FlexMonkey Jul 15, 2015
06edc77
Work in progress demo: got bur, sharpen, brightness, saturation and c…
FlexMonkey Jul 15, 2015
9bc71af
Finished demo!
FlexMonkey Jul 16, 2015
cf4d983
Tidy up code for visualiseTouches and some refactoring
FlexMonkey Jul 17, 2015
141aa48
Some more tidying up :)
FlexMonkey Jul 17, 2015
e7946b7
Created FMMarkingMenuWidget - a button like widget for bottom toolbar…
FlexMonkey Aug 4, 2015
7f09494
Apply default shadow to FMMarkingMenuWidget
FlexMonkey Aug 4, 2015
ee211d2
Latest Xcode 7 / Swift 2.0 Changes
FlexMonkey Sep 12, 2015
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
12 changes: 9 additions & 3 deletions MarkingMenu.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,8 @@
3E628E521B248BDB00A9E560 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0630;
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0700;
ORGANIZATIONNAME = "Simon Gladman";
TargetAttributes = {
3E628E591B248BDB00A9E560 = {
Expand Down Expand Up @@ -314,6 +315,7 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
Expand All @@ -329,7 +331,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -369,7 +371,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = MarkingMenu/Header.h;
Expand All @@ -384,6 +386,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = MarkingMenu/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.flexmonkey.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = 2;
};
Expand All @@ -395,6 +398,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = MarkingMenu/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.flexmonkey.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = 2;
};
Expand All @@ -414,6 +418,7 @@
);
INFOPLIST_FILE = MarkingMenuTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.flexmonkey.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MarkingMenu.app/MarkingMenu";
};
Expand All @@ -429,6 +434,7 @@
);
INFOPLIST_FILE = MarkingMenuTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.flexmonkey.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MarkingMenu.app/MarkingMenu";
};
Expand Down
8 changes: 5 additions & 3 deletions MarkingMenu/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8121.20" systemVersion="15A204h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8101.16"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="MarkingMenu" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
Expand Down
77 changes: 63 additions & 14 deletions MarkingMenu/FMMarkingMenu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,17 @@ import UIKit

class FMMarkingMenu: NSObject
{
let markingMenuContentViewController: FMMarkingMenuContentViewController

let markingMenuItems:[FMMarkingMenuItem]
var markingMenuItems:[FMMarkingMenuItem]
var layoutMode = FMMarkingMenuLayoutMode.SemiCircular
var launchMode = FMMarkingMenuLaunchMode.OpenAtTouchLocation
var visualiseTouches: Bool = false

let markingMenuContentViewController: FMMarkingMenuContentViewController
let viewController: UIViewController
let view: UIView

var tap: FMMarkingMenuPanGestureRecognizer!
var previousTouchLocation = CGPointZero
private var tap: FMMarkingMenuPanGestureRecognizer!
private var previousTouchLocation = CGPointZero

weak var markingMenuDelegate: FMMarkingMenuDelegate?
{
Expand All @@ -44,8 +46,7 @@ class FMMarkingMenu: NSObject
{
self.markingMenuItems = markingMenuItems

let markingMenuOrigin = CGPoint(x: view.frame.width / 2, y: view.frame.height / 2)
markingMenuContentViewController = FMMarkingMenuContentViewController(origin: markingMenuOrigin)
markingMenuContentViewController = FMMarkingMenuContentViewController()

self.viewController = viewController
self.view = view
Expand All @@ -55,7 +56,8 @@ class FMMarkingMenu: NSObject

markingMenuContentViewController.markingMenu = self

tap = FMMarkingMenuPanGestureRecognizer(target: self, action: "tapHandler:")
tap = FMMarkingMenuPanGestureRecognizer(target: self, action: "tapHandler:", markingMenu: self)

view.addGestureRecognizer(tap)
}

Expand All @@ -68,11 +70,12 @@ class FMMarkingMenu: NSObject
{
if recognizer.state == UIGestureRecognizerState.Began
{
open(recognizer.locationInView(view))
// nothing to do here, FMMarkingMenuPanGestureRecognizer
// invokes open() on touchesBegan
}
else if recognizer.state == UIGestureRecognizerState.Changed
{
markingMenuContentViewController.handleMovement(recognizer.locationInView(view))
markingMenuContentViewController.handleMovement(recognizer.locationInView(view), targetView: view)
}
else
{
Expand All @@ -86,20 +89,66 @@ class FMMarkingMenu: NSObject
viewController.dismissViewControllerAnimated(false, completion: nil)
}

private func open(locationInView: CGPoint)
{
func open(locationInView: CGPoint)
{
markingMenuContentViewController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
markingMenuContentViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve

markingMenuContentViewController.view.frame = view.bounds

markingMenuContentViewController.layoutMode = layoutMode

viewController.presentViewController(markingMenuContentViewController, animated: false)
{
let markingMenuOrigin = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)
let markingMenuOrigin: CGPoint

if self.launchMode == .OpenAtScreenCentre
{
markingMenuOrigin = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)
}
else
{
markingMenuOrigin = self.view.convertPoint(locationInView, toView: self.viewController.view)
}

self.markingMenuContentViewController.origin = markingMenuOrigin
self.markingMenuContentViewController.openMarkingMenu(locationInView, markingMenuItems: self.markingMenuItems)
self.markingMenuContentViewController.openMarkingMenu(locationInView, markingMenuItems: self.markingMenuItems, targetView: self.view)
}
}

// MARK: Utilities...

static func setExclusivelySelected(markingMenuItem: FMMarkingMenuItem, markingMenuItems: [FMMarkingMenuItem])
{
let items = getMenuItemsByCategory(markingMenuItem.category!, markingMenuItems: markingMenuItems)

for item in items where item !== markingMenuItem
{
item.isSelected = false
}

markingMenuItem.isSelected = true
}

static func getMenuItemsByCategory(category:String, markingMenuItems: [FMMarkingMenuItem]) -> [FMMarkingMenuItem]
{
var returnArray = [FMMarkingMenuItem]()

for item in markingMenuItems
{
if item.category == category
{
returnArray.append(item)
}

if let subItems = item.subItems
{
returnArray.appendContentsOf(FMMarkingMenu.getMenuItemsByCategory(category, markingMenuItems: subItems))
}
}

return returnArray
}
}


Loading