测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年10月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Alejandro Isaza 和 Travis Kirton 维护。
C4 是一个开源创意编程框架,它利用原生 iOS 编程的力量,使用简化的 API,让您立即开始处理媒体。构建艺术品,设计界面,探索与媒体和互动的新可能性。
C4 是基于 Swift 构建的,将 UIKit 和 Core Animation 的力量交付给您,使您可以用更少的时间和精力创建创新的数字交互。此外,您将获得 Swift 的所有交互性、乐趣和表现力。您的应用程序将运行得非常快。
C4 的 API 简洁流畅,可以让初学者很容易地入门编程。对于经验丰富的开发者来说,C4 可以像链接任何其他原生框架一样轻松地集成到任何现有项目中。有了 C4,您在处理交互、动画和媒体时可以节省大量时间。
花更少的时间在导航不同的框架之间,专注于将您的想法变为现实。C4 将 UIKit 和 Core Animation 的力量结合到一个单独的对象集中,这些对象的 API 易于理解且直接。而且由于 C4 的基础构建在原生框架之上,您将继承 Swift 的更快的代码、编译时间和对现代硬件的优化。
C4 通过让您专注于实验、设计、可视化和构建,而不是学习底层技术,使您的想法变为现实。对象一致且直观 - 它们都以基本相同的方式工作。C4 的语言经过设计,尽可能简单和有表现力。
例如,C4 压缩了属性的访问
let m = movie.width
而不是这样
let m = movie.frame.size.width
C4 中对视图和属性变化的动画更简洁,看起来像这样
ViewAnimation(duration: 0.5) {
shape.center = self.canvas.center
shape.lineWidth = 5
}.animate()
而使用 UIKit + Core Animation,您可能需要这样做
UIView.animateWithDuration(0.5) {
v.center = self.view.center
}
CATransaction.begin()
CATransaction.setValue(NSNumber(float: 0.5), forKey: kCATransactionAnimationDuration)
if let shapeLayer = v.layer as? CAShapeLayer {
shapeLayer.lineWidth = 5
}
CATransaction.commit()
C4 充分利用了 Swift 的所有现代功能:闭包、元组、泛型、交互、结构体、错误处理。而且,是的,您可以这样做
let bananaName = "Jimmy".banana
有关更多信息,请参阅 Swift 概述。
与它所基于的框架(如 UIKit、Core Animation 等)相比,C4 通过其简化的 API 和一致的对象结构,学习起来非常容易。C4 的语言经过设计,使新手和经验丰富的程序员都能够轻松上手并立即使用。
C4 团队一直致力于发布高质量的文档、示例和教程,以便学习如何使用 C4 进行编程。
C4当前版本还包括一个完整的端到端教程,将引导您完成设计、创建和发布一个完整的移动应用:COSMOS。
我们正在将200多个代码示例和30个教程转换为C4的新现代语法。这些示例和教程(即将推出)会指导新手用户了解核心概念,并为经验丰富的开发者提供参考,帮助他们跟上步伐。
最初基于Objective-C,C4现在充分利用了Swift编程语言的特性——Swift本身就是为了快速和强大而构建的。Swift在优化直观、自然的编码方面进行了调整,而C4的每个组件——每一个类、每一个方法和每一个结构——都让这种性能得以显现。
通过C4,您能够以消除创建精美用户体验所需多种框架之间差异的方式,处理媒体、动画和交互。它无缝结合了UIKit、核心动画、核心图形、AVFoudation和QuartzCore的重要组件。
C4为希望为iOS构建精美用户体验的任何人而设计,旨在覆盖极其广泛的潜在用途。这种灵活性是C4最重要的方面之一,展示了其在各种不同用例和学科中的优势。
C4已被用于:
采用MIT许可证,C4是一个开源项目,其功能和功能可以在教育、艺术甚至专业环境中自由使用。该项目欢迎任何人的贡献,项目的代码、文档和过程完全公开,供您阅读、学习和利用。我们核心团队和其他开发者的持续承诺保证了C4将不断更新并关注用户的兴趣。
简洁是C4的一项重大成就。总体而言,C4易于学习、使用、阅读和采用。C4将需要编写的代码量减少到最强大的基本元素。
以电影为例。您不需要AVQueuePlayer、AVPlayerItem、导航资产轨道,以及学习如何通过NSBundle加载文件,您只需从其文件名创建电影并将其添加到画布中
func setup() {
let movie = Movie("halo.mp4")
canvas.add(movie)
movie?.play()
}
使用UIKit + AVFoundation,您需要手动构建电影对象,如下所示
func viewDidLoad() {
guard let url = NSBundle.mainBundle().URLForResource("halo.mp4", withExtension: nil) else {
fatalError("File not found")
}
let asset = AVAsset(URL: url)
let player = AVQueuePlayer(playerItem: AVPlayerItem(asset: asset))
player.actionAtItemEnd = .Pause
let movieLayer = AVPlayerLayer(player: player)
movieLayer.videoGravity = AVLayerVideoGravityResize
let tracks = asset.tracksWithMediaType(AVMediaTypeVideo)
let movieTrack = tracks[0]
let size = movieTrack.naturalSize
movieLayer.frame = CGRect(x: 0,y: 0,width: size.width,height: size.height)
self.view.layer.addSublayer(movieLayer)
player.play()
}
… 以及其他更多内容。