OAStackView 1.0.1

OAStackView 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年1月

oarrabiDenis Lebedev 维护。



  • 作者:
  • Omar Abdelhafith

iOS 9 引入了非常酷的 UIStackView,UIStackView 可以用来轻松创建简单和复杂的布局。

正如预期的那样,UIStackView 仅适用于 iOS 9 及以上。本项目尝试将 StackView 返回到 iOS 7 及以上。

OAStackView 的目标是复制 UIStackView 中的所有功能

使用方法

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

由于 OAStackView 模拟了 UIStackView 的接口,因此 OAStackView 的使用方法类似于 UIStackView

OAStackView 可以从 Interface builder 或代码中使用。

Interface Builder

将一个 UIView 拖到您的视图控制器中,并向其中添加一些视图。

 photo step1_zps2xxl75vw.png

将类更改为 OAStackView

 photo step2_zpsfgwirklz.png

(可选)更改堆叠轴(设置轴值为 0 为水平或 1 为垂直),间距、对齐或分布。

 photo step3_zpsmk8xw3hz.png

运行项目!

 photo step4_zpsgl92oeoc.png

代码

要从代码中使用 OAStackView,请参阅 UIStackView 获取适当的文档。

以下是一个关于其使用的快速示例:

创建要堆叠的视图

 UILabel *l1 = [[UILabel alloc] init];
 l1.text = @"Label 1";
 UILabel *l2 = [[UILabel alloc] init];
 l2.text = @"Label 2";

创建堆叠视图,传递视图数组

OAStackView *stackView = [[OAStackView alloc] initWithArrangedSubviews:@[l1, l2]];
stackView.translatesAutoresizingMaskIntoConstraints = NO;

将堆叠视图添加到 self.view

[self.view addSubview:stackView];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[stackView]"
                                                                  options:0
                                                                  metrics:0
                                                                    views:NSDictionaryOfVariableBindings(stackView)]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[stackView]"
                                                                  options:0
                                                                  metrics:0
                                                                    views:NSDictionaryOfVariableBindings(stackView)]];

安装

OAStackView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "OAStackView"

测试

由于 OAStackView 是从反向工程 UIStackView 构建的,并且由于我打算继续更新和重构 OAStackView,测试是前进的要求之一。

以下是一些 可读的文本子序列(使用 specipy 生成)。

贡献

欢迎所有形式的贡献,如果您觉得这个项目有用,并且想贡献,那么请这样做。

已知问题,以及未来改进

缺少的功能

OAStackView实现了大部分UIStackView的功能,除了以下内容

  • [ ] baselineRelativeArrangement

    @property(nonatomic,getter=isBaselineRelativeArrangement) BOOL baselineRelativeArrangement;

  • [x] layoutMarginsRelativeArrangement

    @property(nonatomic,getter=isLayoutMarginsRelativeArrangement) BOOL layoutMarginsRelativeArrangement;

UIStackViewDistribution也只部分实现了(仍有3个元素没有实现)

  • [x] UIStackViewDistributionFill
  • [x] UIStackViewDistributionFillEqually
  • [x] UIStackViewDistributionFillProportionally
  • [ ] UIStackViewDistributionEqualSpacing
  • [ ] UIStackViewDistributionEqualCentering

请参考UIStackView获取正确的文档。

未来的改进

以下是未来版本中想要包含的内容

  • [ ] 实现剩余的UIStackView功能
  • [ ] 更好的文档
  • [ ] 对某些边缘情况有更好的测试覆盖率
  • [ ] 用Swift重写,或者更加Swift友好

作者

Omar Abdelhafith, [email protected]

许可证

OAStackView受MIT许可证的约束。有关更多信息,请参阅LICENSE文件。