测试已经测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
Released最新发布 | 2016 年 9 月 |
由 beichenming 维护。
BMLayoutConstraint 是一个 UI 布局适配工具,通过 JSON 配置文件快速适应不同设备和多语言 UI 布局,适用于 iOS 应用开发,由 Objective-C 实现。
BMLayoutConstraint 正在开发中,欢迎一起改进项目。
使用 BMLayoutConstraint 的前提是我们使用的 UI 布局是 Mansory 或其他代码布局,BMLayoutConstraint 布局不适用于 Xib 或 Storyboard,我们必须使用示例作为示例。
1. 我们需要在项目中创建一个存储配置文件的目录,我们创建一个新的五级目录来对应我们的设备类型
drawable-iPad(768 * 1024)
drawable-iPhone4_S(320 * 480)
drawable-iPhone5_S_C_SE(320 * 568)
drawable-iPhone6_S(375 * 667)
drawable-iPhone6P_S(414 * 736)
由于 iPad 的大小更大,所以我目前使用默认大小,如果找不到匹配的尺寸,我使用 768 * 1024。在将来,我将继续扩展。
2. 根据适配界面的需要,建立相应的适配文件名。例如,我将适配 ViewController 中的控件布局,所以我会创建五个 ViewController_XXX.json 文件加上设备名称。
JSON 配置文件格式是通过每个控件具有其唯一的 ID,每个 ID 可以后面跟一个语言标识符来区分同一设备下的多语言适配,可以分为两种情况
第一种:同一设备下每种语言的适配都不相同,因此您需要为每种语言单独编写配置约束,ID 的末尾添加语言标识符。
"UILabel" :
[
{
"bm_ViewControllerPhoneNoLabelID_BM_ZH_HANS_US" :
{
"marginLeft" : 30.0,
"marginRight" : 0.0,
"marginTop" : 100.0,
"marginBottom" : 0.0,
"width" : 100.0,
"height" : 20.0,
"fontSize" : 16.0
}
},
{
"bm_ViewControllerPhoneNoLabelID_BM_EN_US" :
{
"marginLeft" : 30.0,
"marginRight" : 0.0,
"marginTop" : 100.0,
"marginBottom" : 0.0,
"width" : 150.0,
"height" : 20.0,
"fontSize" : 16.0
}
},
]
第二种:每种语言下的同一设备适配是相同的,那么我们使用通用配置,ID 的末尾添加 BM_BASE。
"UILabel" :
[
{
"bm_ViewControllerPhoneNoLabelID_BM_BASE" :
{
"marginLeft" : 30.0,
"marginRight" : 0.0,
"marginTop" : 100.0,
"marginBottom" : 0.0,
"width" : 100.0,
"height" : 20.0,
"fontSize" : 16.0
}
}
]
3. 在 App didFinishLaunching 时读取配置文件。
[[BMTLayoutConstraintInterpreter sharedInstance] layoutConstraintAsyncWithContainerName:[self getClassName:[ViewController class]]
andCompletionCallback:nil];