Created
September 1, 2018 22:12
-
-
Save victorBaro/e4df8d2c7359f0753504f8967bce34b0 to your computer and use it in GitHub Desktop.
A magnifying glass effect view to show on top of screen content as seen in this video: https://www.youtube.com/watch?v=MppiS0iD3qY
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MagnifyingView: UIView { | |
private weak var viewToMagnify: UIView! | |
private var touchPoint: CGPoint! | |
var zoomScale: CGFloat = 2 | |
public required init?(coder aDecoder: NSCoder) { fatalError() } | |
public init(viewToMagnify: UIView, size: CGSize) { | |
self.viewToMagnify = viewToMagnify | |
super.init(frame: CGRect(origin: .zero, size: size)) | |
setup() | |
} | |
private func setup() { | |
self.layer.borderColor = UIColor.lightGray.cgColor | |
self.layer.borderWidth = 3 | |
self.layer.cornerRadius = bounds.size.height | |
self.layer.masksToBounds = true | |
} | |
public func setTouchPoint(_ point: CGPoint) { | |
touchPoint = point | |
self.center = CGPoint(x: point.x, y: point.y) | |
setNeedsDisplay() | |
} | |
public override func draw(_ rect: CGRect) { | |
guard let context = UIGraphicsGetCurrentContext() else { return } | |
context.translateBy(x: self.frame.size.width * 0.5, y: self.frame.size.height * 0.5) | |
context.scaleBy(x: zoomScale, y: zoomScale) | |
context.translateBy(x: -touchPoint.x, y: -touchPoint.y) | |
self.viewToMagnify.layer.render(in: context) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment