测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 自定义 |
发布最新发布 | 2014年12月 |
由 Julian Król,Krzysztof Profic,Wojciech Nagrodzki 维护。
这个库是对 NSLayoutConstraint 的一个分类,它增加了一些对生成自动布局约束有帮助的方法。创建此类的原因是
这个分类可以创建约束以定义
每个方法都返回一个约束数组,可以在创建您需要的约束集时应用到视图上或用于进一步的修改。
以下是公共接口的简要描述。
表示未定义值的常量
static const CGFloat kTFNoMetric = NAN;
返回约束数组的函数,这些约束会在父视图中相对传入的视图参数居中传入的视图参数
view
- 生成居中约束的视图
superview
- 将第一个参数传入的视图中心化的视图
option
- 定义视图确切居中心选项的参数
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]
Julian Król,[email protected]
(如有任何错误或扩展建议,请随时给我发邮件)
TFLayoutConstraintsFactory可在Apache 2.0许可下使用。有关更多信息,请参阅LICENSE文件。