Skip to content

Commit

Permalink
Scaling issues tmp fixes & Swift 3 support
Browse files Browse the repository at this point in the history
  • Loading branch information
mozharovsky committed Nov 27, 2016
1 parent e761a6c commit fe7f6d3
Show file tree
Hide file tree
Showing 14 changed files with 194 additions and 86 deletions.
Binary file modified Example/Athlee-ImageEditorKit/.DS_Store
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -706,7 +706,7 @@
DEVELOPMENT_TEAM = RG4N372RZE;
INFOPLIST_FILE = "Athlee-ImageEditorKit/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "io.athlee.Athlee-ImageEditorKit";
PRODUCT_BUNDLE_IDENTIFIER = "io.athlee.Athlee-ImageEditorKit-Demo";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -721,7 +721,7 @@
DEVELOPMENT_TEAM = RG4N372RZE;
INFOPLIST_FILE = "Athlee-ImageEditorKit/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "io.athlee.Athlee-ImageEditorKit";
PRODUCT_BUNDLE_IDENTIFIER = "io.athlee.Athlee-ImageEditorKit-Demo";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand Down
Binary file modified Example/Athlee-ImageEditorKit/Athlee-ImageEditorKit/.DS_Store
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,19 @@
//

import UIKit
import ImagePickerKit

final class CropViewController: UIViewController {

// MARK: Outlets
// MARK: Outlets

@IBOutlet weak var scalePicker: ScalePicker!

// MARK: Properties

var theta: Float = 0
var beta: Float = 0

var transformView: UIView {
return ContainerViewController.Children.image.cropContainerView
}
var theta: Double = 0
var beta: Double = 0
var angle: CGFloat = 0

// MARK: Life cycle

Expand All @@ -30,32 +28,49 @@ final class CropViewController: UIViewController {
scalePicker.reset()
}

// MARK: IBActions
// MARK: IBActions

@IBAction func didPressResetButton(_ sender: AnyObject) {
scalePicker.reset()
transformView.transform = CGAffineTransform.identity
theta = 0
beta = 0
angle = 0

scalePicker.reset()
applyAngleTransform()

let imageViewController = ContainerViewController.Children.image
imageViewController?.updateContent()
}

@IBAction func didChangeValue(_ sender: ScalePicker) {
let value = sender.value
beta = value
let angle = theta + value
let transform = CGAffineTransform(rotationAngle: angle.toRadians())
transformView.transform = transform
beta = Double(value.toRadians())
angle = CGFloat(theta + beta)

applyAngleTransform()
}

@IBAction func didPressRotateButton(_ sender: AnyObject) {
theta += -90
let transform = CGAffineTransform(rotationAngle: (theta + beta).toRadians())
transformView.transform = transform
theta += (-90.0).toRadians()

applyAngleTransform()
}
}

extension Float {
func toRadians() -> CGFloat {
return CGFloat(self) * (CGFloat(M_PI) / 180)

// MARK: Utils

fileprivate func applyAngleTransform() {
let scrollView = ContainerViewController.Children.image.cropView
let imageView = ContainerViewController.Children.image.childView
let transform = CGAffineTransform(rotationAngle: CGFloat(angle))
.scaling(toFill: scrollView.bounds.size, with: imageView.bounds.size, atAngle: Double(angle))

let minZoomFactor = CGAffineTransform.scalingFactor(toFill: scrollView.bounds.size,
with: imageView.bounds.size,
atAngle: Double(angle))

scrollView.minimumZoomScale = CGFloat(minZoomFactor)
imageView.transform = angle != 0 ? transform : .identity
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ final class ImageViewController: UIViewController, Cropable {

var cropView = UIScrollView()
var childView = UIImageView()
var childContainerView = UIView()
var linesView = LinesView()

var alwaysShowGuidelines: Bool = true
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions Example/Athlee-ImageEditorKit/Pods/ImagePickerKit/Radians.swift

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 13 additions & 6 deletions Example/Athlee-ImageEditorKit/Pods/Pods.xcodeproj/project.pbxproj

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Source/UI/ScalePicker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -226,4 +226,8 @@ extension ScalePicker {

scrollView.setContentOffset(offset, animated: false)
}

public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
sendActions(for: .editingDidEnd)
}
}

0 comments on commit fe7f6d3

Please sign in to comment.