TFLayoutConstraintsFactory 1.1.0

TFLayoutConstraintsFactory 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最新发布2014年12月

Julian KrólKrzysztof ProficWojciech Nagrodzki 维护。



  • Julian Król

这个库是对 NSLayoutConstraint 的一个分类,它增加了一些对生成自动布局约束有帮助的方法。创建此类的原因是

  1. 有一个方便的方式定义组件的大小或与其容器之间的边距
  2. 生成像很多具有相同宽度和高度以及彼此之间相同空间的确繁琐的视图的约束

这个分类可以创建约束以定义

  1. 视图大小
  2. 与其父视图的边距
  3. 放置在同一对视图(水平或垂直)旁边的一组视图的布局,宽度/高度相同并且在之间有相同的空间

每个方法都返回一个约束数组,可以在创建您需要的约束集时应用到视图上或用于进一步的修改。

文档

以下是公共接口的简要描述。

常量

表示未定义值的常量

static const CGFloat kTFNoMetric = NAN;

居中

返回约束数组的函数,这些约束会在父视图中相对传入的视图参数居中传入的视图参数

view - 生成居中约束的视图

superview - 将第一个参数传入的视图中心化的视图

option - 定义视图确切居中心选项的参数

  1. TFCenteringOptionNone - 返回一个空的约束数组
  2. TFCenteringOptionAxisX - 仅在 X 轴上居中视图
  3. TFCenteringOptionAxisY - 仅在 Y 轴上居中视图
  4. TFCenteringOptionAbsolute - 在 X 和 Y 轴上居中视图

offset - CGPoint 表示一个向量,通过该向量中心化的视图中心相对于父视图中心进行平移

返回生成的约束的 NSLayoutConstraint 对象数组,可以返回一个空数组

+ (NSArray *)tf_centeringConstraintsForView:(UIView *)view 
                             relativeToView:(UIView *)superview 
                                    options:(TFCenteringOption)option 
                                     offset:(CGPoint)offset

水平对齐

+ (NSArray *)tf_horizontalAlignmentConstraintsForViews:(NSArray *)viewsArray 
                                        separatorViews:(NSArray *)separatorsViewsArray 
                                               margins:(CGFloat)margin;

上述方法返回由separatorsViewsArray中的对象分隔的viewsArray中传入的视图的约束。此外,可以从margin参数中传入从super视图的左和右边缘的边距。这两个数组都不能为nil,并且分离器的数量可以比viewsArray参数中传入的视图的数量少1。

viewsArray - 包含要生成水平对齐约束的UIView的数组

separatorsViewsArray - 包含作为要生成对齐约束的视图之间分隔符的UIView的数组

margin - 表示从super视图边缘的(左和右)边距的CGFloat值

返回生成的约束的NSLayoutConstraint对象数组

垂直对齐

+ (NSArray *)tf_verticalAlignmentConstraintsForViews:(NSArray *)viewsArray 
                                      separatorViews:(NSArray *)separatorsViewsArray 
                                             margins:(CGFloat)margin;  

上述方法返回由viewsArray中传入的视图和一个在separatorsViewsArray中对象分隔的约束,此外可以从margin参数中传入从super视图的顶和底部边缘的边距。这两个数组都不能为nil,并且分离器的数量可以比viewsArray参数中传入的视图的数量少1。

viewsArray - 包含要生成垂直对齐约束的UIView的数组

separatorsViewsArray - 包含作为要生成对齐约束的视图之间分隔符的UIView的数组

margin - 表示从super视图边缘的(顶和底)边距的CGFloat值

返回生成的约束的NSLayoutConstraint对象数组

相对于父视图的边距

+ (NSArray *)tf_constraintsForView:(UIView *)view expandingEdgesToSuperviewWithInsets:(UIEdgeInsets)insets;

上述方法返回将视图适配到super视图大小,并使用insets参数定义的每个边缘的边距的约束数组。如果传入的insets值中设置为kTFNoMetric,则省略此边距值。

view - 要生成并返回约束的UIView

insets - 如果将kTFNoMetric设置为UIEdgeInsets结构中的边距,则每个super视图边缘的边距将不定义

返回为传入的视图生成的约束的NSLayoutConstraint对象数组

设置大小

+ (NSArray *)tf_constraintsForView:(UIView *)view withSize:(CGSize)size;

上述方法返回为在view参数中传入的视图设置宽度约束和/或高度约束的数组。如果将其中一个值设置为kTFNoMetric,则约束生成将忽略该度量。

view - 要生成并返回约束的UIView

size - 定义要设置在约束中的宽度和高度的CGSize结构

返回为传入的视图生成的约束的NSLayoutConstraint对象数组

安装

用法

要运行示例项目,首先克隆存储库,然后从Example目录运行pod install

示例

下面的示例将返回为定义其高度的view的约束。由于设置了kTFNoMetric值,将忽略宽度设置。

[NSLayoutConstraint tf_constraintsForView:view withSize:CGSizeMake(kTFNoMetric, 80)];

下面的示例将返回一组约束数组为view。在以下示例中,约束将设置从superview的顶部为10点,从左边为20点,底部边距将不指定,最后右边为40点。

[NSLayoutConstraint tf_constraintsForView:view expandingEdgesToSuperviewWithInsets:UIEdgeInsetsMake(10, 20, kTFNoMetric, 40)];

下面的示例将返回一个为view返回的约束数组。在提供的示例中,view将根据superview的中心位于X和Y轴上,并且沿Y轴向下平移120点。

[NSLayoutConstraint tf_centeringConstraintsForView:view relativeToView:superview options:TFCenteringOptionAbsolute offset:CGPointMake(kTFNoMetric, 120)];

下面的代码将返回为通过在viewsArray中传递并使用separatorsArray中对象分隔的视图对齐而返回的约束数组。返回的约束将设置所有视图之间的宽度相等,它们之间的间距也将相等。左和右边缘的边距将设置为15点。

[NSLayoutConstraint tf_horizontalAlignmentConstraintsForViews:viewsArray separatorViews:separatorsArray margins:15]

以下示例中返回的约束将类似于上例,但以垂直方式起作用。这意味着将父视图的顶部和底部边缘的边距设置为15点,传递到viewsArray中的视图将具有相同的高度。如先前所述,间隔相同。

[NSLayoutConstraint tf_verticalAlignmentConstraintsForViews:viewsArray separatorViews:separatorsArray margins:15]

变更记录

1.1.0

  • 添加了生成居中约束的方法
  • 添加了对TFLogger的支持

1.0.1

  • 对文档中的论述进行了解释

1.0.0

  • 初始版本

作者

Julian Król,[email protected]

(如有任何错误或扩展建议,请随时给我发邮件)

许可协议

TFLayoutConstraintsFactory可在Apache 2.0许可下使用。有关更多信息,请参阅LICENSE文件。