BMLayoutConstraint 1.1.1

BMLayoutConstraint 1.1.1

测试已经测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最新发布2016 年 9 月

beichenming 维护。



  • 作者
  • beichenming

BMLayoutConstraint 是一个 UI 布局适配工具,通过 JSON 配置文件快速适应不同设备和多语言 UI 布局,适用于 iOS 应用开发,由 Objective-C 实现。

BMLayoutConstraint 正在开发中,欢迎一起改进项目。

要求

  • iOS 8+
  • Xcode 6+

语言

中文说明

示例

使用 BMLayoutConstraint 的前提是我们使用的 UI 布局是 Mansory 或其他代码布局,BMLayoutConstraint 布局不适用于 Xib 或 Storyboard,我们必须使用示例作为示例。

1. 我们需要在项目中创建一个存储配置文件的目录,我们创建一个新的五级目录来对应我们的设备类型

BMLayoutConstraint

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];

作者

beichenming