繁体   English   中英

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

[英]Apple Watch (WatchKit) layout style library for iOS

Apple Watch的布局基于将对象放置到情节提要中。 每个新对象都放置在前一个对象的下方,依此类推。还可以使用组并将对象水平对齐。 (请参阅此处的详细信息)我希望在iOS上具有相同的功能-以这种方式放置UIViews并为它们定义相同的属性,例如对齐方式,相对于容器的宽度等,就像在WatchKit中一样。

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

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

如果不是这样。靠我自己看起来很容易实现,您是否看到任何使其无法实现的关键问题或局限性?

我不认为Interface Builder本身会存在任何附加组件,因此您可以对iOS应用程序使用相同的(丑陋的监视包)约束。 与IB(Xcode的界面生成器)内部的WatchKit混乱相比,适用于iOS的AutoLayout更好,更灵活地使用。

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

有趣的部分:如果您想用代码创建设计并想要一些易于使用的库,则可以尝试以下方法: Masonry (Obj-C)或SnapKit (Same Lib但在Swift中)。 两个库都非常强大并且是最新的。 我不知道开发人员是否实现了自定义对齐方式以将子视图置于其父视图的中心。 您应该自己检查。 :)如果您像我一样喜欢VFL(可视格式语言)。 您应该搜索类似的Lib,或者等到有一天我完成我的项目。 :DI受到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")
    }

有了这个,我们得到的是这样的: 风景模式人像模式 还有很多工作要做,所以我还不能公开未完成的工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM