AxcBedrock
语言
简介
AxcBedrock是一个基本的工具库,为iOS和macOS应用程序提供常用的功能和扩展。
就像Minecraft中的Bedrock一样,作为世界的基础,它承载了所有的方块。
将来,如果时间允许,它将继续支持Dart等语言(😄)点击此处查看Dart版本(仍在开发中..)
主要思想是在开发中建立一致性,不仅限于一个平台或一种语言,连接开发者的习惯,统一所有底层API或简小操作的调用。
在功能上,它与SwifterSwift相似,主要区别在于调用和使用。
例如,SwifterSwift基于直接扩展函数,但由于在一个大型项目中扩展太多,在调用API和查找API时,Xcode的自动完成可能会引起卡顿,并且可能难以找到所需的API。
因此,AxcBedrock 基于命名空间模式封装,需要在调用位置添加后缀".axc",然后可以搜索相应的API。
我不能说有很多项目,但在我参与的项目中,这种解决方案真正解决了代码补全逐渐渗入的问题。它还具有良好的美学,且不会与主项目的扩展名发生命名冲突。
安装
您可以使用 CocoaPods 快速安装 AxcBedrock。
Podfile
pod 'AxcBedrock'
或者,您可以将源代码手动添加到项目中。
使用方法
在 AxcBedrock 中使用功能和扩展非常简单。只需将 AxcBedrock 导入到您的项目中,即可开始使用它。
格式/规范
所有API使用遵循此命名约定
// Call instance function:
xxxx.axc.xxxx
// Call class function:
Xxxx.Axc.Xxxx
这样,您可以轻松访问所需的所有功能和扩展。
示例
示例通话
这是一个简单的示例,展示了如何在AxcBedrock中使用功能
import AxcBedrock
let myString = "hello world"
let testString = myString.axc.keepPrefix(count: 3)
print(testString) // "hel"
文本属性操作
let attText = "这是一段富文本".axc.makeAttributed { make in
make.set(font: 15, range: 0...1)
.set(foregroundColor: "FFBBAA", range: NSRange(location: 0, length: 4))
}
iOS性能 | MacOS性能 |
---|---|
![]() |
![]() |
请注意,AxcUnifiedXXX类是通用类。例如,上例中设置字体和颜色的类是
AxcUnifiedFont和AxcUnifiedColor。
这些类可互换使用,并且可以写成以下方式
AxcUnifiedFont
make.set(font: 15.axc.uiFont, range: 0...1)
make.set(font: 15.4, range: NSRange(location: 0, length: 4))
make.set(font: UIFont.systemFont(ofSize: 15), range: 0...1)
make.set(font: UIFont.systemFont(ofSize: 15), range: NSRange(location: 0, length: 4))
AxcUnifiedColor
.set(foregroundColor: "FFBBAA", range: 1...2)
.set(foregroundColor: "FFBBAA", range: NSRange(location: 0, length: 4))
.set(foregroundColor: UIColor.red, range: 1...2)
.set(foregroundColor: UIColor.red, range: NSRange(location: 0, length: 4))
.set(foregroundColor: 0xFFBBAA, range: 1...2)
.set(foregroundColor: 0xFFBBAA, range: NSRange(location: 0, length: 4))
当然,也支持UIColor和NSColor,但必须在相应平台上使用。
贝塞尔操作
var linesHeight: [AxcUnifiedNumber] = []
for i in 0...1000 {
if (arc4random() % 2) == 0 {
linesHeight.append(80)
}else{
linesHeight.append(-80)
}
}
let bz = UI/NS BezierPath.Axc.CreateRadiateCircle(center: center,
radius: radius,
linesHeight: linesHeight,
clockwise: .clockwise,
startAngle: .direction(.left),
openingAngle: 0,
isReversing: false)
shapeLayer.path = bz.axc.cgPath
iOS性能 | MacOS性能 |
---|---|
![]() |
![]() |
即使在跨平台上,也只需要一个代码库。
对于AxcBedrock中可用函数和扩展的完整列表,请参阅代码或导出Swift-Docc文档。
问题
如果在使用 AxcBedrock 时遇到任何问题或错误,请提交 GitHub 上的问题。
如果您在使用 API 时对任何内容不确定或不清,也可以在 GitHub 上提交问题。
连接
QQ:532432339
贡献
AxcBedrock 是开源的,感谢所有贡献。如果您发现任何错误或希望改进库,请提交一个 pull request。
目前我需要帮助~ 如果您有任何想法,请联系我!或者提交一个 PR,谢谢!Orz
需要帮助的任务
- 改进单元测试部分
- 支持 Swift Package Manager
- 如果有需要优化的地方,请提出优化项
- 如果您想一起开发 Bedrock 的 Dart 版本,请联系我!
授权许可
AxcBedrock 采用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。