【问题标题】:What should I look out for when combining Autolayout and positioning in iOS?在 iOS 中结合 Autolayout 和定位时应该注意什么?
【发布时间】:2019-10-20 07:29:23
【问题描述】:

我正在开发一个 iOS 项目,该项目使用自动布局来设置带有滚动视图和堆栈作为滚动视图内容的视图。

一切正常,我可以添加 UIViews 直到奶牛回到堆栈并完成预期的操作。

然而,当我要为报告视图实现用户可定义的布局时,问题就出现了。

堆栈包含一个专用于用户定义布局的视图。

用户将定义数据输出(例如“好处”)和原点(左上角),并且该视图将被放置在那里。他们可以以这种方式放置尽可能多或尽可能少的视图和数据片段。他们将不了解自动布局,因此将仅依赖这些视图通过左上角及其大小的精确定位。

在开始项目的这个阶段之前我应该​​注意什么?我关心的是全局布局中自动布局的混合/匹配以及在这个特定视图中的精确定位。

寻找有关注意事项、我必须包含的代码(例如应设置的任何标志)等的输入。

感谢您的任何帮助, D

【问题讨论】:

  • 如果设备方向改变了怎么办?用户定义的视图会不会看起来很奇怪?
  • 在许多情况下(但绝对不是全部),您可以通过设置 someView.autoresizingMask = [.flexibleHeight, .flexibleWidth] 来摆脱困境。
  • @Sweeper ...该应用程序此时具有固定的方向...与团队的讨论在纵向/横向的单独设计以及定位的自动计算意图之间来回讨论。然而,就目前而言……绝对是一个方向。
  • @Yonat - 所以总的来说,我想通过精确放置(原点和大小 - 因此框架)设置的视图我会设置它们的 autoresizingMask 你已经描述了吗?
  • 是的。并保持translatesAutoresizingMaskIntoConstraints 为真。

标签: swift autolayout


【解决方案1】:

感谢所有建议。

对于给出的建议,我的概念有点涉及,但我确实开发了一个解决方案,允许用户在仍然使用 AutoLayout 的同时按原点(左上角)定位小部件。

对于那些感兴趣的人,我创建了一个“虚拟”UIView 来保存所有用户定位的小部件,然后根据该视图的顶部和左侧锚点创建自动布局约束。

由于小部件是通过从字典中读取布局来创建的,因此如果它们对布局进行了更改,我只需在它们进行更改时删除/刷新布局。

再次感谢掘金,没有它我不会想到这个解决方案。

D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2011-10-23
    • 2013-05-25
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多