ExMedia 0.1.3

ExMedia 0.1.3

Daniel Wang 维护。



 
依赖项
ExDraw>= 0
ExType>= 0
 

ExMedia 0.1.3

  • 作者
  • 王渊鸥

ExMedia

ExtraSwift 的一部分,为媒体应用了一些功能。

安装

  • 使用源代码,下载源代码并将其拖至您的项目中。

  • 使用 Cocoapods,在 Podfile 中添加一行 pod 'ExMedia'

颜色

  • 扩展 -- UIColor

从十六进制字符串创建一个实例

init(hex:String)

从红色/绿色/蓝色/透明度部分创建一个实例,红色/绿色/蓝色使用 0 到 255 之间的数字,透明度使用 0 到 100 之间的数字。

init(RGBA r:Int, _ g:Int, _ b:Int, _ a:Int = 100)

从 HSB/透明度创建一个实例。所有部分的数字在 0 到 100 之间

init(HSBA h:Int, _ s:Int, _ b:Int, _ a:Int = 100)

获取颜色中的红色/绿色/蓝色/透明度部分,红色/绿色/蓝色使用 0 到 255 之间的数字,透明度使用 0 到 100 之间的数字。

var RGBA:(Int, Int, Int, Int)

获取包含红色/绿色/蓝色的十六进制字符串

var hex6:String

获取包含红色/绿色/蓝色/透明度的十六进制字符串

var hex8:String

获取 HSB/透明度部分。所有部分的数字在 0 到 100 之间

var HSBA:(Int, Int, Int, Int)

获取当前颜色和另一个颜色之间的中间颜色。

func combined(color:UIColor) -> UIColor

从当前颜色中移除一个颜色数字。

func divided(color:UIColor) -> UIColor

生成比当前颜色更浅的颜色。

func lighted(level:Int) -> UIColor

生成比当前颜色更深的颜色。

func darked(level:Int) -> UIColor

过滤器

  • 扩展 -- UIImage

从 UIImage 获取 CIImage

var ciImage:CIImage?

应用一个滤镜并生成一个新的 UIImage 实例。

func applyFilter(_ action:(CIImage) -> CIImage?) -> UIImage?

从滤镜生成一个 UIImage。

static func generator(size:CGSize, _ action:() -> CIImage?) -> UIImage?

  • 扩展 -- CIImage

从 CIImage 获取 UIImage

func uiImage(size:CGSize? = nil) -> UIImage?

  • 扩展 --- CIImage

滤镜 -- 从 Apple 文档获取引用

func boxBlur(radius:CGFloat = 10.0) -> CIImage?

func discBlur(radius:CGFloat = 8.0) -> CIImage?

func gaussianBlur(radius:CGFloat = 8.0) -> CIImage?

func medianFilter() -> CIImage?

func motionBlur(radius:CGFloat = 20.0, angle:CGFloat = 0.0) -> CIImage?

func noiseReduction(noiseLevel:CGFloat = 0.02, sharpness:CGFloat = 0.4) -> CIImage?

func zoomBlur(center:CGPoint = CGPoint(x: 150.0, y: 150.0), amount:CGFloat = 20.0) -> CIImage?

func colorClamp(minComponents:ColorComponents = (0, 0, 0, 0), maxComponents:ColorComponents = (0, 0, 0, 0)) -> CIImage?

func colorControls(brightness:CGFloat, saturation:CGFloat = 1.0, contrast:CGFloat = 1.0) -> CIImage?

func colorMatrix(redVector:ColorComponents = (1, 0, 0, 0), greenVector:ColorComponents = (0, 1, 0, 0), blueVector:ColorComponents = (0, 0, 1, 0), alpahVector:ColorComponents = (0, 0, 0, 1), biasVector:ColorComponents = (0, 0, 0, 0)) -> CIImage?

func colorPolynomial(redVector:ColorComponents = (1, 0, 0, 0), greenVector:ColorComponents = (0, 1, 0, 0), blueVector:ColorComponents = (0, 0, 1, 0), alpahVector:ColorComponents = (0, 0, 0, 1), biasVector:ColorComponents = (0, 0, 0, 0)) -> CIImage?

func exposureAdjust(ev:CGFloat = 0.5) -> CIImage?

func gammaAdjust(ev:CGFloat = 0.75) -> CIImage?

func hueAdjust(ev:CGFloat = 0.75) -> CIImage?

func linearToSRGBToneCurve(ev:CGFloat = 0.75) -> CIImage?

func SRGBToneCurveToLinear(ev:CGFloat = 0.75) -> CIImage?

func temperatureAndTint(neutral:(temp:CGFloat, tint:CGFloat) = (6500, 0), targetNeutral:(temp:CGFloat, tint:CGFloat) = (6500, 0)) -> CIImage?

func toneCurve(point0:CGPoint = CGPoint(x: 0, y: 0), point1:CGPoint = CGPoint(x: 0.25, y: 0.25), point2:CGPoint = CGPoint(x: 0.5, y: 0.5), point3:CGPoint = CGPoint(x: 0.75, y: 0.75), point4:CGPoint = CGPoint(x: 1, y: 1)) -> CIImage?

func vibrance(amount:CGFloat) -> CIImage?

func whitePointAdjust(color:UIColor) -> CIImage?

func colorCrossPolynomial(red:ColorCoefficients = ColorCoefficients(r: 1, g: 0, b: 0, rr: 0, gg: 0, bb: 0, rg: 0, gb: 0, br: 0, add: 0), green:ColorCoefficients = ColorCoefficients(r: 0, g: 1, b: 0, rr: 0, gg: 0, bb: 0, rg: 0, gb: 0, br: 0, add: 0), blue:ColorCoefficients = ColorCoefficients(r: 0, g: 0, b: 1, rr: 0, gg: 0, bb: 0, rg: 0, gb: 0, br: 0, add: 0)) -> CIImage?

func colorCube(data:Data, dimension:CGFloat = 2.0) -> CIImage?

func colorCubeWithColorSpace(data:Data, colorSpace:CGColorSpace, dimension:CGFloat = 2.0) -> CIImage?

func colorInvert() -> CIImage?

func colorMap(gradientImage:CIImage) -> CIImage?

func colorMonochrome(color:UIColor, intensity:CGFloat = 1.0) -> CIImage?

func color Posterize(levels:CGFloat) -> CIImage?

func flaseColor(color0:UIColor, color1:UIColor) -> CIImage?

func maskToAlpha() -> CIImage?

func maximumComponent() -> CIImage?

func minimumComponent() -> CIImage?

func photoEffectChrome() -> CIImage?

func photoEffectFade() -> CIImage?

func photoEffectInstant() -> CIImage?

func photoEffectMono() -> CIImage?

func photoEffectNoir() -> CIImage?

func photoEffectProcess() -> CIImage?

func photoEffectTonal() -> CIImage?

func photoEffectTransfer() -> CIImage?

func sepiaTone(intensity:CGFloat = 1.0) -> CIImage?

func vignette(radius:CGFloat = 1.0, intensity:CGFloat = 0.0) -> CIImage?

func vignetteEffect(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 0.0, intensity:CGFloat = 1.0) -> CIImage?

func additionCompositing(backgroudImage:CIImage) -> CIImage?

func colorBlendMode(backgroudImage:CIImage) -> CIImage?

func colorBurnBlendMode(backgroudImage:CIImage) -> CIImage?

func colorDodgeBlendMode(backgroudImage:CIImage) -> CIImage?

func darkenBlendMode(backgroudImage:CIImage) -> CIImage?

func differenceBlendMode(backgroudImage:CIImage) -> CIImage?

func divideBlendMode(backgroudImage:CIImage) -> CIImage?

func exclusionBlendMode(backgroudImage:CIImage) -> CIImage?

func hardLightBlendMode(backgroudImage:CIImage) -> CIImage?

func hueBlendMode(backgroudImage:CIImage) -> CIImage?

func lightenBlendMode(backgroudImage:CIImage) -> CIImage?

func linearBurnBlendMode(backgroudImage:CIImage) -> CIImage?

func linearDodgeBlendMode(backgroudImage:CIImage) -> CIImage?

func luminosityBlendMode(backgroudImage:CIImage) -> CIImage?

func maximumCompositing(backgroudImage:CIImage) -> CIImage?

func minimumCompositing(backgroudImage:CIImage) -> CIImage?

func multiplyBlendMode(backgroudImage:CIImage) -> CIImage?

func multiplyCompositing(backgroudImage:CIImage) -> CIImage?

func overlayBlendMode(backgroudImage:CIImage) -> CIImage?

func pinLightBlendMode(backgroudImage:CIImage) -> CIImage?

func saturationBlendMode(backgroudImage:CIImage) -> CIImage?

func screenBlendMode(backgroudImage:CIImage) -> CIImage?

func softLightBlendMode(backgroudImage:CIImage) -> CIImage?

func sourceAtopCompositing(backgroudImage:CIImage) -> CIImage?

func sourceInCompositing(backgroudImage:CIImage) -> CIImage?

func sourceOutCompositing(backgroudImage:CIImage) -> CIImage?

func sourceOverCompositing(backgroudImage:CIImage) -> CIImage?

func subtractBlendMode(backgroudImage:CIImage) -> CIImage?

func bumpDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 300.0, scale:CGFloat = 0.5) -> CIImage?

func bumpDistortionLinear(center:CGPoint = CGPoint(x: 300, y: 300), radius:CGFloat = 300.0, angle:CGFloat = 0, scale:CGFloat = 0.5) -> CIImage?

func circleSplashDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 150.0) -> CIImage?

func circularWrap(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 150.0, angle:CGFloat = 0.0) -> CIImage?

func droste(insetPoint0:CGPoint = CGPoint(x: 200, y: 200), insetPoint1:CGPoint = CGPoint(x: 400, y: 400), strand:CGFloat = 1.0, periodicity:CGFloat = 1.0, rotation:CGFloat = 0.0, zoom:CGFloat = 1.0) -> CIImage?

func displacementDistortion(displacementImage:CIImage, scale:CGFloat = 50.0) -> CIImage?

func glassDistortion(texture:CIImage, center:CGPoint = CGPoint(x: 150, y:150), scale:CGFloat = 200.0) -> CIImage?

func glassLozenge(point0:CGPoint = CGPoint(x: 150, y: 150), point1:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 100.0, refraction:CGFloat = 1.7) -> CIImage?

func holeDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 150.0) -> CIImage?

func lightTunnel(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 0, rotation:CGFloat = 0) -> CIImage?

func pinchDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 300.0, scale:CGFloat = 0.5) -> CIImage?

func stretchCrop(size:CGSize, cropAmount:Bool, centerStretchAmount:Bool) -> CIImage?

func torusLensDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 160.0, width:CGFloat = 80.0, refraction:CGFloat = 1.7) -> CIImage?

func twirlDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 300.0, angle:CGFloat = 3.14) -> CIImage?

func vortexDistortion(center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 300.0, angle:CGFloat = 56.55) -> CIImage?

生成器--从苹果文档获取引用

静态函数 aztecCodeGenerator(data:Data, correctionLevel:CGFloat = 23.0, layers:CGFloat = 0, compactStyle:CGFloat = 0) -> CIImage?

静态函数 checkerboardGenerato(color0:UIColor, color1:UIColor, center:CGPoint = CGPoint(x: 150, y: 150), width:CGFloat = 80.0, sharpness:CGFloat = 1.0) -> CIImage?

静态函数 code128BarcodeGenerator(asciiString:String, quietSpace:CGFloat = 7.0) -> CIImage?

静态函数 constantColorGenerator(color:UIColor) -> CIImage?

静态函数 lenticularHaloGenerator(color:UIColor, center:CGPoint = CGPoint(x: 150, y: 150), haloRadius:CGFloat = 70.0, haloWidth:CGFloat = 87.0, haloOverlap:CGFloat = 0.77, striationStrenght:CGFloat = 0.5, striationConstrast:CGFloat = 1.0, time:CGFloat = 0) -> CIImage?

静态函数 PDF417BarcodeGenerator(data:Data, minWidth:CGFloat = 0, maxWidth:CGFloat = 0, minHeight:CGFloat = 0, maxHeight:CGFloat = 0, dataColums:CGFloat = 0, rows:CGFloat = 0, preferredAspectRatio:CGFloat = 0, compactionMode:PDF417CompactionMode = .automatic, compactStyle:Bool = false, correctionLevel:CGFloat = 0, alwaysSpecifyCompaction:CGFloat = 0 ) -> CIImage?

静态函数 QRCodeGenerator(data:Data, correctionLevel:QRCodeCorrectionLevel = .Medium) -> CIImage?

静态函数 randomGenerator() -> CIImage?

静态函数 starShineGenerator(color:UIColor, center:CGPoint = CGPoint(x: 150, y: 150), radius:CGFloat = 50.0, crossScale:CGFloat = 15.0, crossAngle:CGFloat = 0.6, crossOpacity:CGFloat = -2.0, crossWidth:CGFloat = 2.5, epsilon:CGFloat = -2.0) -> CIImage?

静态函数 stripesGenerator(color0:UIColor, color1:UIColor, center:CGPoint = CGPoint(x: 150, y: 150), width:CGFloat = 80.0, sharpness:CGFloat = 1.0) -> CIImage?

静态函数 sunbeamsGenerator(color:UIColor, center:CGPoint = CGPoint(x: 150, y: 150), sunRadius:CGFloat = 40.0, maxStriationRadius: CGFloat = 2.58, striationStrength: CGFloat = 0.5, striationContrast: CGFloat = 1.38, time: CGFloat = 0.0) -> CIImage?

Transformer -- 从苹果文档中获取引用

函数 affineTransform(transform:CGAffineTransform) -> CIImage?

函数 crop(rect:CGRect) -> CIImage?

函数 lanczosScaleTransform(scale: CGFloat = 1.0, aspectRatio: CGFloat = 1.0) -> CIImage?

函数 perspectiveCorrection(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint) -> CIImage?

函数 perspectiveTransform(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint) -> CIImage?

函数 perspectiveTransformWithExtent(extent: CGAffineTransform, topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint) -> CIImage?

函数 straightenFilter(angle: CGFloat) -> CIImage?

Grandient -- 从苹果文档中获取引用

静态函数 gaussianGradient(color0:UIColor, color1:UIColor, center:CGPoint = CGPoint(x:150, y:150), radius:CGFloat = 300.0) -> CIImage?

静态函数 linearGradient(color0:UIColor, color1:UIColor, center:CGPoint, radius0:CGFloat, radius1:CGFloat) -> CIImage?

静态函数 linearGradient(color0:UIColor, color1:UIColor, point0:CGPoint, point1:CGPoint) -> CIImage?

静态函数 smoothLinearGradient(color0:UIColor, color1:UIColor, point0:CGPoint, point1:CGPoint) -> CIImage?

Half tone -- 从苹果文档中获取引用

函数 circularScreen(center:CGPoint, width:CGFloat = 6.0, sharpness:CGFloat = 0.7) -> CIImage?

函数 CMYKHalftone(center:CGPoint, width:CGFloat = 6.0, angle:CGFloat = 0.0, sharpness:CGFloat = 0.7, GCR:CGFloat = 1.0, UCR:CGFloat = 0.5) -> CIImage?

函数 dotScreen(center:CGPoint, angle: CGFloat = 0.0, width: CGFloat = 6.0, sharpness: CGFloat = 0.7) -> CIImage?

函数 hatchedScreen(center:CGPoint, angle: CGFloat = 0.0, width: CGFloat = 6.0, sharpness: CGFloat = 0.7) -> CIImage?

函数 lineScreen(center:CGPoint, angle: CGFloat = 0.0, width: CGFloat = 6.0, sharpness: CGFloat = 0.7) -> CIImage?

函数 areaAverage(extent:CGRect) -> CIImage?

函数 areaHistogram(extent:CGRect, count:CGFloat, scale:CGFloat) -> CIImage?

函数 rowAverage(extent:CGRect) -> CIImage?

函数 columnAverage(extent:CGRect) -> CIImage?

函数 histogramDisplayFilter(height: CGFloat = 100.0, highLimit: CGFloat = 1.0, lowLimit: CGFloat = 0.0) -> CIImage?

函数 areaMaximum(extent:CGRect) -> CIImage?

函数 areaMinimum(extent:CGRect) -> CIImage?

函数 areaMaximumAlpha(extent:CGRect) -> CIImage?

函数 areaMinimumAlpha(extent:CGRect) -> CIImage?

函数 sharpenLuminance(sharpness: CGFloat = 0.4) -> CIImage?

func unsharpMask(radius:CGFloat = 2.5, intensity:CGFloat = 0.5) -> CIImage?

func blendWithAlphaMask(background:CIImage, mask:CIImage) -> CIImage?

func blendWithMask(background:CIImage, mask:CIImage) -> CIImage?

func bloom(radius:CGFloat = 10.0, intensity:CGFloat = 0.5) -> CIImage?

func comicEffect() -> CIImage?

func convolution3X3(matrix:Matrix3X3, bias:CGFloat = 0.0) -> CIImage?

func convolution5X5(matrix:Matrix5X5, bias:CGFloat = 0.0) -> CIImage?

func convolution7X7(matrix:Matrix7X7, bias:CGFloat = 0.0) -> CIImage?

func convolution9Horizontal(matrix:Matrix3X3, bias:CGFloat = 0.0) -> CIImage?

func convolution9Vertical(matrix:Matrix3X3, bias:CGFloat = 0.0) -> CIImage?

func crystallize(center:CGPoint = CGPoint(x:150.0, y:150.0), radius:CGFloat = 20.0) -> CIImage?

func depthOfField(point0:CGPoint, point1:CGPoint, saturation:CGFloat, unsharpMaskRadius:CGFloat, unsharpMaskIntensity:CGFloat, radius:CGFloat) -> CIImage?

func edges(intensity:CGFloat = 1.0) -> CIImage?

func edgeWork(intensity:CGFloat = 3.0) -> CIImage?

func gloom(radius:CGFloat = 10.0, intensity:CGFloat = 0.5) -> CIImage?

func heightFieldFromMask(radius:CGFloat = 10.0) -> CIImage?

func hexagonalPixellate(center:CGPoint = CGPoint(x:150, y:150), scale:CGFloat = 8.0) -> CIImage?

func highlightShadowAdjust(shadowAmount:CGFloat, highlightAmount:CGFloat = 1.0) -> CIImage?

func lineOverlay(NRNoiseLevel:CGFloat = 0.07, NRSharpness:CGFloat = 0.71, edgeIntensity:CGFloat = 1.0, threshold:CGFloat = 0.1, contrast:CGFloat = 50.0) -> CIImage?

func pixellate(center:CGPoint = CGPoint(x:150, y:150), scale:CGFloat = 8.0) -> CIImage?

func pointillize(center:CGPoint = CGPoint(x:150, y:150), radius:CGFloat = 20.0) -> CIImage?

func shadedMaterial(shadingImage:CIImage, scale:CGFloat = 10.0) -> CIImage?

func spotColor(spot0:SpotColor, spot1:SpotColor, spot2:SpotColor) -> CIImage?

func spotLight(color:UIColor, lightPosition:Dim3, lightPointsAt:Dim3, brightness:CGFloat = 3.0, concentration:CGFloat = 0.1) -> CIImage?

func affineClamp(transform:CGAffineTransform) -> CIImage?

func affineTile(transform:CGAffineTransform) -> CIImage?

func eightfoldReflectedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func fourfoldReflectedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, acuteAngle:CGFloat = 1.57, width:CGFloat = 100.0) -> CIImage?

func fourfoldRotatedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func fourfoldTranslatedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, acuteAngle:CGFloat = 1.57, width:CGFloat = 100.0) -> CIImage?

func glideReflectedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func kaleidoscope(center:CGPoint = CGPoint(x:150, y:150), count:CGFloat = 6, angle:CGFloat = 0) -> CIImage?

func opTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, scale:CGFloat = 2.8, width:CGFloat = 65.0) -> CIImage?

func parallelogramTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, acuteAngle:CGFloat = 1.57, width:CGFloat = 100.0) -> CIImage?

func perspectiveTile(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint) -> CIImage?

func sixfoldReflectedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func sixfoldRotatedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func triangleKaleidoscope(point:CGPoint = CGPoint(x:150, y:150), size:CGFloat = 700, rotation:CGFloat = -0.36, decay:CGFloat = 0.85) -> CIImage?

func triangleTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func twelvefoldReflectedTile(center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 0, width:CGFloat = 100.0) -> CIImage?

func accordionFoldTransition(target:CIImage, time:CGFloat = 0, bottomHeight:CGFloat = 0, numberOfFolds:CGFloat = 3.0, foldShadowAmount:CGFloat = 0.1) -> CIImage?

func barsSwipeTransition(target:CIImage, time:CGFloat = 0, angle:CGFloat = 3.14, width:CGFloat = 30.0, barOffset:CGFloat = 10.0) -> CIImage?

func copyMachineTransition(target:CIImage, time:CGFloat = 0, color:UIColor = UIColor.gray, extent:CGRect = CGRect(x:0, y:0, width:300, height:300), angle:CGFloat = 0.0, width:CGFloat = 30.0, opacity:CGFloat = 1.3) -> CIImage?

func disintegrateWithMaskTransition(target:CIImage, mask:CIImage, time:CGFloat = 0, shadowRadius:CGFloat = 8.0, shadowDesity:CGFloat = 0.65, shadowOffset:CGSize = CGSize(width:0, height:-10)) -> CIImage?

func dissolveTransition(target:CIImage, time:CGFloat = 0) -> CIImage?

func flashTransition(target:CIImage, time:CGFloat = 0, color:UIColor, center:CGPoint = CGPoint(x:150, y:150), extent:CGRect = CGRect(x:0, y:0, width:300, height:300), maxStriationRadius:CGFloat = 2.58, striationStrength:CGFloat = 0.5, striationContrast:CGFloat = 1.38, fadeThreshold:CGFloat = 0.85) -> CIImage?

func modTransition(target:CIImage, time:CGFloat = 0, center:CGPoint = CGPoint(x:150, y:150), angle:CGFloat = 2.0, radius:CGFloat = 150.0, compression:CGFloat = 300.0) -> CIImage?

func pageCurlTransition(target:CIImage, backside:CIImage, shading:CIImage, time:CGFloat = 0, extent:CGRect = CGRect(x:0, y:0, width:300, height:300), angle:CGFloat = 0, radius:CGFloat = 100.0) -> CIImage?

func pageCurlWithShadowTransition(target:CIImage, backside:CIImage, time:CGFloat = 0, extent:CGRect = CGRect(x:0, y:0, width:0, height:0), angle:CGFloat = 0.0, radius:CGFloat = 100.0, shadowSize:CGFloat = 0.5, shadowAmount:CGFloat = 0.7, shadowExtent:CGRect = CGRect(x:0, y:0, width:0, height:0)) -> CIImage?

func rippleTransition(target:CIImage, shading:CIImage, time:CGFloat = 0, center:CGPoint = CGPoint(x:150, y:150), extent:CGRect = CGRect(x:0, y:0, width:300, height:300), width:CGFloat = 100.0, scale:CGFloat = 50.0) -> CIImage?

func swipeTransition(target:CIImage, color:UIColor, time:CGFloat = 0, extent:CGRect = CGRect(x:0, y:0, width:300, height:300), angle:CGFloat = 0.0, width:CGFloat = 300.0, opacity:CGFloat = 0) -> CIImage?

  • Enum -- ExFilter
public enum ExFilter {
    case boxBlur(radius:CGFloat)
    case discBlur(radius:CGFloat)
    case gaussianBlur(radius:CGFloat)
    case median
    case motionBlur(radius:CGFloat, angle:CGFloat)
    case noiseReduction(noiseLevel:CGFloat, sharpness:CGFloat)
    case zoomBlur(center:CGPoint, amount:CGFloat)
    case colorClamp(minComponents:CIImage.ColorComponents, maxComponents:CIImage.ColorComponents)
    case colorControls(brightness:CGFloat, saturation:CGFloat, contrast:CGFloat)
    case colorMatrix(redVector:CIImage.ColorComponents, greenVector:CIImage.ColorComponents, blueVector:CIImage.ColorComponents, alpahVector:CIImage.ColorComponents, biasVector:CIImage.ColorComponents)
    case colorPolynomial(redVector:CIImage.ColorComponents, greenVector:CIImage.ColorComponents, blueVector:CIImage.ColorComponents, alpahVector:CIImage.ColorComponents, biasVector:CIImage.ColorComponents)
    case exposureAdjust(ev:CGFloat)
    case gammaAdjust(ev:CGFloat)
    case hueAdjust(ev:CGFloat)
    case linearToSRGBToneCurve(ev:CGFloat)
    case SRGBToneCurveToLinear(ev:CGFloat)
    case temperatureAndTint(neutral:(temp:CGFloat, tint:CGFloat), targetNeutral:(temp:CGFloat, tint:CGFloat))
    case toneCurve(point0:CGPoint, point1:CGPoint, point2:CGPoint, point3:CGPoint, point4:CGPoint)
    case vibrance(amount:CGFloat)
    case whitePointAdjust(color:UIColor)
    case colorCrossPolynomial(red:ColorCoefficients, green:ColorCoefficients, blue:ColorCoefficients)
    case colorCube(data:Data, dimension:CGFloat)
    case colorCubeWithColorSpace(data:Data, colorSpace:CGColorSpace, dimension:CGFloat)
    case colorInvert
    case colorMap(gradient:CIImage)
    case colorMonochrome(color:UIColor, intensity:CGFloat)
    case colorPosterize(levels:CGFloat)
    case flaseColor(color0:UIColor, color1:UIColor)
    case maskToAlpha
    case maximumComponent
    case minimumComponent
    case photoEffectChrome
    case photoEffectFade
    case photoEffectInstant
    case photoEffectNoir
    case photoEffectProcess
    case photoEffectTonal
    case photoEffectTransfer
    case sepiaTone(intensity:CGFloat)
    case vignette(radius:CGFloat, intensity:CGFloat)
    case vignetteEffect(center:CGPoint, radius:CGFloat, intensity:CGFloat)
    case additionCompositing(backgroudImage:CIImage)
    case colorBlendMode(backgroudImage:CIImage)
    case colorBurnBlendMode(backgroudImage:CIImage)
    case colorDodgeBlendMode(backgroudImage:CIImage)
    case darkenBlendMode(backgroudImage:CIImage)
    case differenceBlendMode(backgroudImage:CIImage)
    case divideBlendMode(backgroudImage:CIImage)
    case exclusionBlendMode(backgroudImage:CIImage)
    case hardLightBlendMode(backgroudImage:CIImage)
    case hueBlendMode(backgroudImage:CIImage)
    case lightenBlendMode(backgroudImage:CIImage)
    case linearBurnBlendMode(backgroudImage:CIImage)
    case linearDodgeBlendMode(backgroudImage:CIImage)
    case luminosityBlendMode(backgroudImage:CIImage)
    case maximumCompositing(backgroudImage:CIImage)
    case minimumCompositing(backgroudImage:CIImage)
    case multiplyBlendMode(backgroudImage:CIImage)
    case multiplyCompositing(backgroudImage:CIImage)
    case overlayBlendMode(backgroudImage:CIImage)
    case pinLightBlendMode(backgroudImage:CIImage)
    case saturationBlendMode(backgroudImage:CIImage)
    case screenBlendMode(backgroudImage:CIImage)
    case softLightBlendMode(backgroudImage:CIImage)
    case sourceAtopCompositing(backgroudImage:CIImage)
    case sourceInCompositing(backgroudImage:CIImage)
    case sourceOutCompositing(backgroudImage:CIImage)
    case sourceOverCompositing(backgroudImage:CIImage)
    case subtractBlendMode(backgroudImage:CIImage)
    case bumpDistortion(center:CGPoint, radius:CGFloat, scale:CGFloat)
    case bumpDistortionLinear(center:CGPoint, radius:CGFloat, angle:CGFloat, scale:CGFloat)
    case circleSplashDistortion(center:CGPoint, radius:CGFloat)
    case circularWrap(center:CGPoint, radius:CGFloat, angle:CGFloat)
    case droste(insetPoint0:CGPoint, insetPoint1:CGPoint, strand:CGFloat, periodicity:CGFloat, rotation:CGFloat, zoom:CGFloat)
    case displacementDistortion(displacementImage:CIImage, scale:CGFloat)
    case glassDistortion(texture:CIImage, center:CGPoint, scale:CGFloat)
    case glassLozenge(point0:CGPoint, point1:CGPoint, radius:CGFloat, refraction:CGFloat)
    case holeDistortion(center:CGPoint, radius:CGFloat)
    case lightTunnel(center:CGPoint, radius:CGFloat, rotation:CGFloat)
    case pinchDistortion(center:CGPoint, radius:CGFloat, scale:CGFloat)
    case stretchCrop(size:CGSize, cropAmount:Bool, centerStretchAmount:Bool)
    case torusLensDistortion(center:CGPoint, radius:CGFloat, width:CGFloat, refraction:CGFloat)
    case twirlDistortion(center:CGPoint, radius:CGFloat, angle:CGFloat)
    case vortexDistortion(center:CGPoint, radius:CGFloat, angle:CGFloat)
    case affineTransform(transform:CGAffineTransform)
    case crop(rect:CGRect)
    case lanczosScaleTransform(scale:CGFloat, aspectRatio:CGFloat)
    case perspectiveCorrection(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint)
    case perspectiveTransform(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint)
    case perspectiveTransformWithExtent(extent:CGAffineTransform, topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint)
    case straightenFilter(angle:CGFloat)
    case circularScreen(center:CGPoint, width:CGFloat, sharpness:CGFloat)
    case CMYKHalftone(center:CGPoint, width:CGFloat, angle:CGFloat, sharpness:CGFloat, GCR:CGFloat, UCR:CGFloat)
    case dotScreen(center:CGPoint, angle:CGFloat, width:CGFloat, sharpness:CGFloat)
    case hatchedScreen(center:CGPoint, angle:CGFloat, width:CGFloat, sharpness:CGFloat)
    case lineScreen(center:CGPoint, angle:CGFloat, width:CGFloat, sharpness:CGFloat)
    case areaAverage(extent:CGRect)
    case areaHistogram(extent:CGRect, count:CGFloat, scale:CGFloat)
    case rowAverage(extent:CGRect)
    case columnAverage(extent:CGRect)
    case histogramDisplayFilter(height:CGFloat, highLimit:CGFloat, lowLimit:CGFloat)
    case areaMaximum(extent:CGRect)
    case areaMinimum(extent:CGRect)
    case areaMaximumAlpha(extent:CGRect)
    case areaMinimumAlpha(extent:CGRect)
    case sharpenLuminance(sharpness:CGFloat)
    case unsharpMask(radius:CGFloat, intensity:CGFloat)
    case blendWithAlphaMask(backgroud:CIImage, mask:CIImage)
    case blendWithMask(backgroud:CIImage, mask:CIImage)
    case bloom(radius:CGFloat, intensity:CGFloat)
    case comicEffect
    case convolution3X3(matrix:Matrix3X3, bios:CGFloat)
    case convolution5X5(matrix:Matrix5X5, bios:CGFloat)
    case convolution7X7(matrix:Matrix7X7, bios:CGFloat)
    case convolution9Horizontal(matrix:Matrix3X3, bios:CGFloat)
    case convolution9Vertical(matrix:Matrix3X3, bios:CGFloat)
    case crystallize(center:CGPoint, radius:CGFloat)
    case depthOfField(point0:CGPoint, point1:CGPoint, saturation:CGFloat, unsharpMaskRadius:CGFloat, unsharpMaskIntensity:CGFloat, radius:CGFloat)
    case edges(intensity:CGFloat)
    case edgeWork(intensity:CGFloat)
    case gloom(radius:CGFloat, intensity:CGFloat)
    case heightFieldFromMask(radius:CGFloat)
    case hexagonalPixellate(center:CGPoint, scale:CGFloat)
    case highlightShadowAdjust(shadowAmount:CGFloat, highlightAmount:CGFloat)
    case lineOverlay(NRNoiseLeve:CGFloat, NRSharpness:CGFloat, edgeIntensity:CGFloat, threshold:CGFloat, contrast:CGFloat)
    case pixellate(center:CGPoint, scale:CGFloat)
    case pointillize(center:CGPoint, radius:CGFloat)
    case shadedMaterial(shadingImage:CIImage, scale:CGFloat)
    case spotColor(spot0:SpotColor, spot1:SpotColor, spot2:SpotColor)
    case spotLight(color:UIColor, lightPosition:Dim3, lightPointsAt:Dim3, brightness:CGFloat, concentration:CGFloat)
    case affineClamp(transform:CGAffineTransform)
    case affineTile(transform:CGAffineTransform)
    case eightfoldReflectedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case fourfoldReflectedTile(center:CGPoint, angle:CGFloat, acuteAngle:CGFloat, width:CGFloat)
    case fourfoldRotatedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case fourfoldTranslatedTile(center:CGPoint, angle:CGFloat, acuteAngle:CGFloat, width:CGFloat)
    case glideReflectedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case kaleidoscope(center:CGPoint, count:CGFloat, angle:CGFloat)
    case opTile(center:CGPoint, angle:CGFloat, scale:CGFloat, width:CGFloat)
    case parallelogramTile(center:CGPoint, angle:CGFloat, acuteAngle:CGFloat, width:CGFloat)
    case perspectiveTile(topLeft:CGPoint, topRight:CGPoint, bottomLeft:CGPoint, bottomRight:CGPoint)
    case sixfoldReflectedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case sixfoldRotatedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case triangleKaleidoscope(point:CGPoint, size:CGFloat, rotation:CGFloat, decay:CGFloat)
    case triangleTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case twelvefoldReflectedTile(center:CGPoint, angle:CGFloat, width:CGFloat)
    case accordionFoldTransition(target:CIImage, time:CGFloat, bottomHeight:CGFloat, numberOfFolds:CGFloat, foldShadowAmount:CGFloat)
    case barsSwipeTransition(target:CIImage, time:CGFloat, angle:CGFloat, width:CGFloat, barOffset:CGFloat)
    case copyMachineTransition(target:CIImage, time:CGFloat, color:UIColor, extent:CGRect, angle:CGFloat, width:CGFloat, opacity:CGFloat)
    case disintegrateWithMaskTransition(target:CIImage, mask:CIImage, time:CGFloat, shadowRadius:CGFloat, shadowDesity:CGFloat, shadowOffset:CGSize)
    case dissolveTransition(target:CIImage, time:CGFloat)
    case flashTransition(target:CIImage, time:CGFloat, color:UIColor, center:CGPoint, extent:CGRect, maxStriationRadius:CGFloat, striationStrength:CGFloat, striationContrast:CGFloat, fadeThreshold:CGFloat)
    case modTransition(target:CIImage, time:CGFloat, center:CGPoint, angle:CGFloat, radius:CGFloat, compression:CGFloat)
    case pageCurlTransition(target:CIImage, backside:CIImage, shading:CIImage, time:CGFloat, extent:CGRect, angle:CGFloat, radius:CGFloat)
    case pageCurlWithShadowTransition(target:CIImage, backside:CIImage, time:CGFloat, extent:CGRect, angle:CGFloat, radius:CGFloat, shadowSize:CGFloat, shadowAmount:CGFloat, shadowExtent:CGRect)
    case rippleTransition(target:CIImage, shading:CIImage, time:CGFloat, center:CGPoint, extent:CGRect, width:CGFloat, scale:CGFloat)
    case swipeTransition(target:CIImage, color:UIColor, time:CGFloat, extent:CGRect, angle:CGFloat, width:CGFloat, opacity:CGFloat)
}

public enum ExGenerator {
    case aztecCode(data:Data, correctionLevel:CGFloat, layers:CGFloat, compactStyle:CGFloat)
    case checkerboard(color0:UIColor, color1:UIColor, center:CGPoint, width:CGFloat, sharpness:CGFloat)
    case code128Barcode(asciiString:String, quietSpace:CGFloat)
    case constantColor(color:UIColor)
    case lenticularHalo(color:UIColor, center:CGPoint, haloRadius:CGFloat, haloWidth:CGFloat, haloOverlap:CGFloat, striationStrenght:CGFloat, striationConstrast:CGFloat, time:CGFloat)
    case PDF417Barcode(data:Data, minWidth:CGFloat, maxWidth:CGFloat, minHeight:CGFloat, maxHeight:CGFloat, dataColums:CGFloat, rows:CGFloat, preferredAspectRatio:CGFloat, compactionMode:CIImage.PDF417CompactionMode, compactStyle:Bool, correctionLevel:CGFloat, alwaysSpecifyCompaction:CGFloat)
    case QRCode(data:Data, correctionLevel:CIImage.QRCodeCorrectionLevel)
    case random
    case starShine(color:UIColor, center:CGPoint, radius:CGFloat, crossScale:CGFloat, crossAngle:CGFloat, crossOpacity:CGFloat, crossWidth:CGFloat, epsilon:CGFloat)
    case stripes(color0:UIColor, color1:UIColor, center:CGPoint, width:CGFloat, sharpness:CGFloat)
    case sunbeams(color:UIColor, center:CGPoint, sunRadius:CGFloat, maxStriationRadius:CGFloat, striationStrength:CGFloat, striationContrast:CGFloat, time:CGFloat)
    case gaussianGradient(color0:UIColor, color1:UIColor, center:CGPoint, radius:CGFloat)
    case linearGradientRadius(color0:UIColor, color1:UIColor, center:CGPoint, radius0:CGFloat, radius1:CGFloat)
    case linearGradientPoint(color0:UIColor, color1:UIColor, point0:CGPoint, point1:CGPoint)
    case smoothLinearGradient(color0:UIColor, color1:UIColor, point0:CGPoint, point1:CGPoint)
}
  • 扩展 -- CIImage

对图像实例应用过滤器。

func apply(filter: ExFilter) -> CIImage?

通过过滤器生成图像。

static func generate(generator: ExGenerator) -> CIImage?

Image

  • 扩展 -- UIImage

将颜色遮罩添加到图像

func mask(color:UIColor) -> UIImage?

对图像应用模糊滤镜

func blur(radius:CGFloat) -> UIImage?

将图像保存到相册

func saveToPhotos()

将图像保存到文件存储

func savePngFile(_ filename:String) -> Bool

func saveJpegFile(_ filename:String, quality:CGFloat = 0.75) -> Bool

Sound

  • 功能

震动

func ex_vibrate()

注册声音并播放声音。

func ex_registerSound(resFile:String) -> SystemSoundID

func ex_playSound(soundId:SystemSoundID)

Photos

  • 扩展 -- PHAsset

获取资产图像

函数 image(bySize size:CGSize? = nil) -> UIImage?

  • 扩展 -- PHAssetCollection

获取相簿列表

静态函数 albums(_ skipNames:[String] = ["Slo-mo", "Videos", "Recently Deleted"]) -> [PHAssetCollection]

从相簿获取资产

函数 assets(_ ascending:Bool = false) -> [PHAsset]

条码扫描器

  • 类 -- ExBarcodeScannerView

开始扫描

公共函数 start()

基本动画

  • 扩展 -- CABasicAnimation

基本动画模式

public enum Mode {
        //layer
        //下列layer必须使用"transform"作为key
        case rotateX(from:CGFloat, to:CGFloat) //上下翻转
        case rotateY(from:CGFloat, to:CGFloat) //左右翻转
        case rotateZ(from:CGFloat, to:CGFloat) //平面翻转, 顺时针
        case scale(fromX:CGFloat, fromY:CGFloat, fromZ:CGFloat, toX:CGFloat, toY:CGFloat, toZ:CGFloat)
        case scaleX(from:CGFloat, to:CGFloat)
        case scaleY(from:CGFloat, to:CGFloat)
        case scaleZ(from:CGFloat, to:CGFloat)
        case translate(fromX:CGFloat, fromY:CGFloat, fromZ:CGFloat, toX:CGFloat, toY:CGFloat, toZ:CGFloat)
        case translateX(from:CGFloat, to:CGFloat)
        case translateY(from:CGFloat, to:CGFloat)
        case translateZ(from:CGFloat, to:CGFloat)
        
        case contents(from:CGImage?, to:CGImage?)   //key为nil
        case contentsRect(from:CGRect, to:CGRect)   //key为nil, rect使用的是0~1.0之间的相对值
        case contentsCenter(from:CGRect, to:CGRect) //key为nil, rect使用的是0~1.0之间的相对值
        case opacity(from:CGFloat, to:CGFloat)  //透明度, 值为0~0.1
        //case masksToBounds(from:Bool, to:Bool)
        //case isDoubleSided(from:Bool, to:Bool)  //是否绘制layer的背面
        case cornerRadius(from:CGFloat, to:CGFloat)
        case borderWidth(from:CGFloat, to:CGFloat)
        case borderColor(from:CGColor, to:CGColor)
        case shadowOpacity(from:CGFloat, to:CGFloat)    //阴影透明度
        case shadowOffset(from:CGSize, to:CGSize)
        case shadowColor(from:CGColor?, to:CGColor?)
        case shadowPath(from:CGPath?, to:CGPath?)
        
        case filters(from:[Any]?, to:[Any]?)
        case compositingFilter(from:Any?, to:Any?)
        case backgroundFileters(from:[Any]?, to:[Any]?)
        
        case bounds(from:CGRect, to:CGRect)
        case boundsOrigin(from:CGPoint, to:CGPoint)
        case boundsSize(from:CGSize, to:CGSize)
        case boundsOriginX(from:CGFloat, to:CGFloat)
        case boundsOriginY(from:CGFloat, to:CGFloat)
        case boundsSizeWidth(from:CGFloat, to:CGFloat)
        case boundsSizeHeight(from:CGFloat, to:CGFloat)
        
        case position(fromX:CGFloat, fromY:CGFloat, toX:CGFloat, toY:CGFloat)
        case positionX(from:CGFloat, to:CGFloat)
        case positionY(from:CGFloat, to:CGFloat)
        
        case zPosition(from:CGFloat, to:CGFloat)
        
        case anchorPointZ(from:CGFloat, to:CGFloat)
        case anchorPoint(from:CGPoint, to:CGPoint)
        case anchorPointX(from:CGFloat, to:CGFloat)
        case anchorPointY(from:CGFloat, to:CGFloat)
        
        case transform(from:CATransform3D, to:CATransform3D)
        case sublayerTransform(from:CATransform3D, to:CATransform3D)
        
        
        //text layer
        case fontSize(from:CGFloat, to:CGFloat)
        case foregroundColor(from:CGColor?, to:CGColor?)
        
        
        //shape layer
        case path(from:CGPath?, to:CGPath?)
        case fillColor(from:CGColor?, to:CGColor?)
        case lineDashPhase(from:CGFloat, to:CGFloat)
        case lineWidth(from:CGFloat, to:CGFloat)
        case miterLimit(from:CGFloat, to:CGFloat)
        case strokeColor(from:CGColor?, to:CGColor?)
        case strokeStart(from:CGFloat, to:CGFloat)
        case strokeEnd(from:CGFloat, to:CGFloat)
        
        //gradient layer
        case colors(from:[CGColor]?, to:[CGColor]?)
        case locations(from:[CGFloat]?, to:[CGFloat]?)
        case startPoint(from:CGPoint, to:CGPoint)
        case endPoint(from:CGPoint, to:CGPoint)
        
        //emitter layer
        case emitterPosition(from:CGPoint, to:CGPoint)
        case emitterZPosition(from:CGFloat, to:CGFloat)
        case emitterSize(from:CGSize, to:CGSize)
        
        //replicator layer
        case instanceDelay(from:TimeInterval, to:TimeInterval)
        case instanceTransform(from:CATransform3D, to:CATransform3D)
        case instanceColor(from:CGColor?, to:CGColor?)
        case instanceRedOffset(from:Float, to:Float)
        case instanceGreenOffset(from:Float, to:Float)
        case instanceBlueOffset(from:Float, to:Float)
        case instanceAlphaOffset(from:Float, to:Float)
    }

通过模式创建动画

初始化(init(mode:Mode))

关键帧动画

  • 扩展 -- CAKeyframeAnimation

动画模式

public enum ValuePoint {
        case rotateX(value:CGFloat)
        case rotateY(value:CGFloat)
        case rotateZ(value:CGFloat)
        case scale(x:CGFloat, y:CGFloat, z:CGFloat)
        case scaleX(value:CGFloat)
        case scaleY(value:CGFloat)
        case scaleZ(value:CGFloat)
        case translate(x:CGFloat, y:CGFloat, z:CGFloat)
        case translateX(value:CGFloat)
        case translateY(value:CGFloat)
        case translateZ(value:CGFloat)
        
        case contents(value:CGImage?)
        case contentsRect(value:CGRect)
        case contentsCenter(value:CGRect)
        case opacity(value:CGFloat)
        //case masksToBounds(value:Bool)
        //case isDoubleSided(value:Bool)
        case cornerRadius(value:CGFloat)
        case borderWidth(value:CGFloat)
        case borderColor(value:CGColor)
        case shadowOpacity(value:CGFloat)
        case shadowOffset(value:CGSize)
        case shadowColor(value:CGColor?)
        case shadowPath(value:CGPath?)
        
        case filters(value:[Any]?)
        case compositingFilter(value:Any?)
        case backgroundFileters(value:[Any]?)
        
        case bounds(value:CGRect)
        case boundsOrigin(value:CGPoint)
        case boundsSize(value:CGSize)
        case boundsOriginX(value:CGFloat)
        case boundsOriginY(value:CGFloat)
        case boundsSizeWidth(value:CGFloat)
        case boundsSizeHeight(value:CGFloat)
        
        case position(x:CGFloat, y:CGFloat)
        case positionX(value:CGFloat)
        case positionY(value:CGFloat)
        
        case zPosition(value:CGFloat)
        
        case anchorPointZ(value:CGFloat)
        case anchorPoint(value:CGPoint)
        case anchorPointX(value:CGFloat)
        case anchorPointY(value:CGFloat)
        
        case transform(value:CATransform3D)
        case sublayerTransform(value:CATransform3D)
        
        //text layer
        case fontSize(value:CGFloat)
        case foregroundColor(value:CGColor?)
        
        
        //shape layer
        case path(value:CGPath?)
        case fillColor(value:CGColor?)
        case lineDashPhase(value:CGFloat)
        case lineWidth(value:CGFloat)
        case miterLimit(value:CGFloat)
        case strokeColor(value:CGColor?)
        case strokeStart(value:CGFloat)
        case strokeEnd(value:CGFloat)
        
        //gradient layer
        case colors(value:[CGColor]?)
        case locations(value:[CGFloat]?)
        case startPoint(value:CGPoint)
        case endPoint(value:CGPoint)
        
        //emitter layer
        case emitterPosition(value:CGPoint)
        case emitterZPosition(value:CGFloat)
        case emitterSize(value:CGSize)
        
        //replicator layer
        case instanceDelay(value:TimeInterval)
        case instanceTransform(value:CATransform3D)
        case instanceColor(value:CGColor?)
        case instanceRedOffset(value:Float)
        case instanceGreenOffset(value:Float)
        case instanceBlueOffset(value:Float)
        case instanceAlphaOffset(value:Float)
    }

从点列表生成动画

初始化(init(pointList:[(time:Float, point:ValuePoint)]))

作者

王渊鸥

2018-10-20