Skip to content

Commit

Permalink
Merge pull request #2 from richardoti/refactor
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
richardtop committed Aug 11, 2015
2 parents cfbf8fb + 3af3d1e commit 24af5c8
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 62 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699D81B70ABFC0021FA73"
BuildableName = "ImagePickerDemo.app"
BlueprintName = "ImagePickerDemo"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699ED1B70ABFC0021FA73"
BuildableName = "ImagePickerDemoTests.xctest"
BlueprintName = "ImagePickerDemoTests"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699ED1B70ABFC0021FA73"
BuildableName = "ImagePickerDemoTests.xctest"
BlueprintName = "ImagePickerDemoTests"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699D81B70ABFC0021FA73"
BuildableName = "ImagePickerDemo.app"
BlueprintName = "ImagePickerDemo"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699D81B70ABFC0021FA73"
BuildableName = "ImagePickerDemo.app"
BlueprintName = "ImagePickerDemo"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29D699D81B70ABFC0021FA73"
BuildableName = "ImagePickerDemo.app"
BlueprintName = "ImagePickerDemo"
ReferencedContainer = "container:ImagePickerDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
50 changes: 2 additions & 48 deletions Source/BottomView/BottomContainerView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,12 @@ class BottomContainerView: UIView {
return button
}()

lazy var imageWrapper: ImageWrapper = {
let view = ImageWrapper()
lazy var imageWrapper: StackView = {
let view = StackView(frame: CGRect(x: 0, y: 0, width: 80, height: 80))
view.setTranslatesAutoresizingMaskIntoConstraints(false)

return view
}()

lazy var configuration: PickerConfiguration = {
let configuration = PickerConfiguration()
return configuration
Expand Down Expand Up @@ -157,51 +156,6 @@ class BottomContainerView: UIView {
}
}

// MARK: - Wrapper methods

func updateWrapperImages(array: NSMutableArray) {
switch array.count {
case 1:
imageWrapper.firstImageView.image = array.firstObject as? UIImage
imageWrapper.secondImageView.image = nil
imageWrapper.secondImageView.alpha = 0
if pastCount < 1 {
animateImageView(imageWrapper.firstImageView)
}
case 0:
imageWrapper.firstImageView.image = nil
case 2:
imageWrapper.firstImageView.image = array[1] as? UIImage
imageWrapper.secondImageView.image = array.firstObject as? UIImage
imageWrapper.secondImageView.alpha = 1
imageWrapper.thirdImageView.alpha = 0
if pastCount < 2 {
animateImageView(imageWrapper.secondImageView)
}
case 3:
imageWrapper.firstImageView.image = array[2] as? UIImage
imageWrapper.secondImageView.image = array[1] as? UIImage
imageWrapper.thirdImageView.image = array.firstObject as? UIImage
imageWrapper.thirdImageView.alpha = 1
imageWrapper.fourthImageView.alpha = 0
if pastCount < 3 {
animateImageView(imageWrapper.thirdImageView)
}
default:
imageWrapper.fourthImageView.alpha = 1
imageWrapper.firstImageView.image = array.lastObject as? UIImage
imageWrapper.secondImageView.image = array[array.count - 2] as? UIImage
imageWrapper.thirdImageView.image = array[array.count - 3] as? UIImage
imageWrapper.fourthImageView.image = array[array.count - 4] as? UIImage
if pastCount < array.count {
animateImageView(imageWrapper.fourthImageView)
}
}

pastCount = array.count
pickerButton.photoNumber = array.count
}

private func animateImageView(imageView: UIImageView) {
imageView.transform = CGAffineTransformMakeScale(0, 0)

Expand Down
35 changes: 27 additions & 8 deletions Source/BottomView/ImageStack.swift
Original file line number Diff line number Diff line change
@@ -1,28 +1,47 @@
import UIKit

class ImageStack: UIView {
protocol ImageStackDelegate {
func imageStackDidReload()
}

var images: NSMutableArray = NSMutableArray()
var views: NSMutableArray = NSMutableArray()
struct ImageStack {

override init(frame: CGRect) {
super.init(frame: frame)
static var sharedStack = ImageStack()

}
var images: NSMutableArray = NSMutableArray()
var delegate: ImageStackDelegate?

func pushImage(image: UIImage) {
images.insertObject(image, atIndex: 0)
delegate?.imageStackDidReload()
println("Image pushed")
println(images)
}

func dropImage(image: UIImage) {
images.removeObject(image)
delegate?.imageStackDidReload()
println("Image dropped")
println(images)
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
func containsImage(image: UIImage) -> Bool {
return images.containsObject(image)
}

func getImages() -> [UIImage] {
// let size = images.count > 4 ? 3 : images.count
// var array = [UIImage]()
// for i in 0...size {
// array.append(images[i] as! UIImage)
// }
// return array
println("b")
var array: [UIImage] = [UIImage]()
for image in images {
println("a")
array.append(image as! UIImage)
}
return array
}
}
56 changes: 56 additions & 0 deletions Source/BottomView/StackView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import UIKit

class StackView: UIView {

let stack: ImageStack = ImageStack.sharedStack
var images: [UIImage] = [UIImage]()
var views: [UIImageView] = {
var array = [UIImageView]()
for i in 1...4 {
array.append(UIImageView())
}
return array
}()

lazy var viewSize: CGSize = CGSize(width: self.frame.width * 0.6, height: self.frame.height * 0.6)

override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.blueColor()

addViews()
layoutSubviews()
ImageStack.sharedStack.delegate = self
}

func addViews() {
views.map{ self.addSubview($0) }
}

override func layoutSubviews() {
let stride = -4
for (i, view) in enumerate(views) {
println("a")
var side = i * stride
var frame = CGRect(origin: CGPoint(x: side, y: side), size: viewSize)
view.frame = frame
view.backgroundColor = UIColor.redColor()
view.layer.borderColor = UIColor.blackColor().CGColor
view.layer.borderWidth = 1
}
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

extension StackView: ImageStackDelegate {
func imageStackDidReload() {
for (index, image) in enumerate(stack.getImages()) {
if index < 4 {
views[index].image = image
}
}
}
}
1 change: 1 addition & 0 deletions Source/CameraView/CameraView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ class CameraView: UIViewController {
self.stillImageOutput!.captureStillImageAsynchronouslyFromConnection(self.stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo), completionHandler: { (buffer, error) -> Void in
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
let image = UIImage(data: imageData)
ImageStack.sharedStack.pushImage(image!)
self.delegate?.imageToLibrary(image!)
let orientation = ALAssetOrientation(rawValue: image!.imageOrientation.rawValue)
let assetsLibrary = ALAssetsLibrary()
Expand Down
8 changes: 3 additions & 5 deletions Source/ImageGallery/ImageGalleryView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ class ImageGalleryView: UIView {
static let indicatorHeight: CGFloat = 8
}

var stack: ImageStack = ImageStack()

lazy var collectionView: UICollectionView = { [unowned self] in
let collectionView = UICollectionView(frame: CGRectMake(0, 0, 0, 0),
collectionViewLayout: self.collectionViewLayout)
Expand Down Expand Up @@ -261,18 +259,18 @@ extension ImageGalleryView: UICollectionViewDelegate {

if cell.selectedImageView.image != nil {
UIView.animateWithDuration(0.2, animations: { [unowned self] in
cell.selectedImageView.transform = CGAffineTransformMakeScale(0, 0)
cell.selectedImageView.transform = CGAffineTransformMakeScale(0.1, 0.1)
}, completion: { _ in
cell.selectedImageView.image = nil
})
stack.dropImage(image)
ImageStack.sharedStack.dropImage(image)
} else {
cell.selectedImageView.image = getImage("selectedImageGallery")
cell.selectedImageView.transform = CGAffineTransformMakeScale(0, 0)
UIView.animateWithDuration(0.2, animations: { _ in
cell.selectedImageView.transform = CGAffineTransformIdentity
})
stack.pushImage(image)
ImageStack.sharedStack.pushImage(image)
}

delegate?.imageSelected(selectedImages)
Expand Down
2 changes: 1 addition & 1 deletion Source/ImageGallery/ImageGalleryViewDataSource.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ extension ImageGalleryView: UICollectionViewDataSource {
shouldTransform = false
}

if selectedImages.containsObject(image) {
if ImageStack.sharedStack.containsImage(image) {
cell.selectedImageView.image = getImage("selectedImageGallery")
cell.selectedImageView.alpha = 1
cell.selectedImageView.transform = CGAffineTransformIdentity
Expand Down

0 comments on commit 24af5c8

Please sign in to comment.