     }
     
     open func appear(_ spotlight: SpotlightType, duration: TimeInterval = SpotlightView.defaultAnimateDuration) {
-        maskLayer.add(appearAnimation(duration, spotlight: spotlight), forKey: nil)
-        self.spotlight = spotlight
+        appear([spotlight], duration: duration)
+    }
+    
+    open func appear(_ spotlights: [SpotlightType], duration: TimeInterval = SpotlightView.defaultAnimateDuration) {
+        maskLayer.add(appearAnimation(duration, spotlights: spotlights), forKey: nil)
+        self.spotlights.append(contentsOf: spotlights)
     }
     
     open func disappear(_ duration: TimeInterval = SpotlightView.defaultAnimateDuration) {

        return layer
    }()
    
    var spotlight: SpotlightType?
    
    public override init(frame: CGRect) {
        super.init(frame: frame)

extension SpotlightView {
    private func moveDirect(_ toSpotlight: SpotlightType, duration: TimeInterval = SpotlightView.defaultAnimateDuration) {
        maskLayer.add(moveAnimation(duration, toSpotlight: toSpotlight), forKey: nil)
        spotlights = [toSpotlight]
    }
    
    private func moveDisappear(_ toSpotlight: SpotlightType, duration: TimeInterval = SpotlightView.defaultAnimateDuration) {
        CATransaction.begin()
        CATransaction.setCompletionBlock {
            self.appear(toSpotlight, duration: duration)
            self.spotlights = [toSpotlight]
        }
        disappear(duration)
        CATransaction.commit()
