iOS 8.0+ Xcode 7.2+ Swift 4.0
pod "MCScratchImageView"Just drag MCScratchImageView.swift to the project tree
If you use CocoaPods, first import MCScratchImageView
import MCScratchImageViewvar scratchImageView: MCScratchImageView!// init() scratchImageView = MCScratchImageView() // init(frame:) scratchImageView = MCScratchImageView(frame: yourRect)Or use StoryBoard.
// use default touch point radius scratchImageView.setMaskImage(yourUIImage) // use custom touch point radius scratchImageView.setMaskImage(yourUIImage, spotRadius: 100)// set the delegate scratchImageView.delegate = *** /* ... */ // implement the MCScratchImageViewDelegate method extension YourController: MCScratchImageViewDelegate { func mcScratchImageView(_ mcScratchImageView: MCScratchImageView, didChangeProgress progress: CGFloat) { print("Progress did changed: " + String(format: "%.2f", progress)) if (progress >= 0.8) { mcScratchImageView.scratchAll() } } }// current scratched progress public var progress: CGFloat // Determin the radius of the touch point private(set) var spotRadius: CGFloat = 45.0 // set the mask image & radius public func setMaskImage(_ image: UIImage) public func setMaskImage(_ image: UIImage, spotRadius: CGFloat) // scratch all mask fields public func scratchAll()In "Example" folder.
- Don't set the scratchImageView.image directlly, you need to use setMaskImage(paras) to set the mask image.
- Don't set the touch point radius (var spotRadius: CGFloat) directlly.
- The contentMode should use default resize mode.
Minecode, minecoder@163.com
MCScratchImageView is available under the MIT license. See the LICENSE file for more info.


