iOS 的 Apple Watch (WatchKit) 布局样式库

Apple Watch (WatchKit) layout style library for iOS

Apple Watch 的布局基于将对象放置到故事板。每个新对象都放置在前一个对象的正下方等。也可以使用组和水平对齐对象相同的方式。 (查看详细信息 here)我希望在 iOS 上具有相同的功能 - 以这种方式放置 UIView 并定义它们相同的属性,如对齐方式、相对于容器的宽度等,就像在 WatchKit 中一样。

与Android上的LinearLayout也类似。我在 github 上找到了 CSLinearLayoutView,但它很旧而且不使用自动布局。

是否存在用于此目的的任何好的库?

如果没有..我自己实现这个看起来很容易,你有没有发现任何关键问题或限制使它无法实现?

我认为 Interface Builder 本身没有或将来会有任何插件,因此您可以对 iOS 应用程序使用相同的(丑陋的 watchkit)约束。 iOS 的 AutoLayout 比 IB(Xcode 的 Interface Builder)中的 WatchKit 乱七八糟的使用方式更好更灵活。

我确实更喜欢在我的代码中完成大部分设计工作,所以我不必担心 IB 是否会为我创建一些不必要的东西。如果你想要一些拖放,你应该使用 IB 并学习如何使用 AutoLayout。

有趣的部分: 如果你想在代码中创建你的设计并想要一些易于使用的库,你可以尝试以下这些:Masonry (Obj-C) or SnapKit(相同的库,但在 Swift).这两个库都非常强大并且是最新的。我不知道开发人员是否实施了自定义对齐方式以将子视图置于其父视图的中心。你应该自己检查一下。 :) 如果您像我一样喜欢 VFL(视觉格式语言)。您应该搜索类似的 Lib 或等到有一天我完成我的项目。 :D 我受到 SnapKits 闪亮语法的启发,并开始创建我自己的 VFL 约束框架。我还实现了将我的子视图置于其父视图中心的可能性。

    let spacer1 = View(name: "spacer1")
    let spacer2 = View(name: "spacer2")

    let view1 = AutoLayoutView(name: "view1")
    view1.backgroundColor = UIColor.whiteColor()
    view1.layer.cornerRadius = 50

    let view2 = AutoLayoutView(name: "view2")
    view2.backgroundColor = UIColor.redColor()
    view2.layer.cornerRadius = 10

    self.rootView.addSubview(spacer1)
    self.rootView.addSubview(spacer2)
    self.rootView.addSubview(view1)
    self.rootView.addSubview(view2)

    self.rootView.addConstraints { (add) -> Void in
        add.group({ (add) -> Void in
            add.normal.vertical.format("[view1(100)]").alignCenterHorizontaly
            add.normal.vertical.format("[view2(30)]")
            add.normal.horizontal.format("[view1(100)][spacer1]").alignCenterVerticaly
            add.normal.horizontal.format("[spacer1][view2(40)]").alignCenterY
            add.normal.horizontal.format("[view2][spacer2(==spacer1)]|")
        }, identifier: "GroupName")
    }

有了这个,我们得到了类似的东西: 还有很多工作要做,所以我不能public未完成的工作。

希望能对您有所帮助。 :)

在 iOS9 中引入为 UIStackView - https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/

iOS 7+ 的自定义 UIStackView 实现 https://github.com/oarrabi/OAStackView