问题标签 [pure-layout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
426 浏览

ios - Swift PureLayout:在最高垂直居中的子视图上方和下方添加 x 点填充

我正在使用 PureLayout 框架并用 Swift 编写我的 UIView。

我有一个视图,其中包含四个高度不同的按钮。

我添加了约束以使这些按钮等间距,并在视图中垂直居中,并在最后按钮的任一侧添加填充。但是,我不确定如何设置视图的高度/顶部约束,使其与最高按钮的顶部之间有 8.0 点的差距。我可以将约束添加到每个按钮的顶部和底部,以便它们都距离视图边缘 >= 8.0 像素,但这意味着视图可以垂直拉伸,同时仍保持这些约束。直到运行时,我才知道这些按钮中的哪一个是最高的。

我能想到的唯一选择是事先遍历我的按钮并找到存储在变量中的最高按钮,并在制作约束时使用它,但我想知道是否有一种方法可以更简单地使用 PureLayout 来做到这一点,无需遍历所有这些对象。有没有一种方法我可以应用到视图的高度,而不是说“在满足其余约束的同时使这个值尽可能小”之类的方法?

我为草率道歉,但这里是我的目标的形象。忽略水平间距。矩形是视图,圆圈是按钮,大小不一。视图需要在这些按钮中最高的按钮上方/下方有 8.0 点的填充,即本例中的蓝色按钮。它们都在视图中垂直居中,我不知道它们的大小,直到我在实例化视图时动态设置图像。

长方形

0 投票
1 回答
1235 浏览

ios - Swift 尾随约束在 tableview 中未按预期工作

UITableView用一个函数定义了扩展,将默认视图放在 tableView 的顶部。由于某种原因,以下代码行无法按预期工作。

1)没有提供正确解决方案的代码

在这种情况下,预期的输出将是一个黑色视图,距 tableView 顶部 40 像素,带有前导和后边距。但是当我跑的时候,我什至看不到风景。

2)提供正确解决方案的代码

在这种情况下,我得到了预期的解决方案。即从顶部开始的黑色视图 40 和 8 作为来自 tableView 的尾部和前沿的边距,高度为 150。

我还有一个功能几乎与上述相同,但差异非常小(我认为)。

此函数在 tableView 的中心添加一个标签,并按预期完美运行。

tableView 在所有 4 个边上都固定到它的 superview 边缘。没有问题。

但是,我无法理解为什么案例 1 不起作用。有人可以解释这两行之间的区别吗?

1)containerView.autoPinEdge(.trailing, to: .trailing, of: self, withOffset: 8)这不起作用

2)containerView.autoPinEdge(.trailing, to: .trailing, of: self, withOffset: self.frame.width - 8) 这确实令人惊讶。

0 投票
2 回答
588 浏览

ios - 正确设置 PureLayout 约束?

我将 PureLayout 用于我的编程视图约束。我以为我正确设置了它们,尺寸,X 和 Y 已解决。但是,当我在 SE 和 7 Plus 上运行代码时,视图无法正确对齐。

这是代码片段:

我认为视网膜屏幕上的屏幕点是相同的,那么为什么这些数字会有差异呢?

0 投票
1 回答
1911 浏览

ios - 根据内容调整uiscrollview的大小

当内容添加到我的标签时,我在调整大小和使滚动视图可垂直滚动时遇到了一些问题。我的层次结构如下所示:

我的等级

虽然我的观点是这样的:

我的观点

因此,当我从 API 调用获取文本时,我想在开始时在代码中填写带有内容的标签。但出于测试目的,我刚刚硬编码了一些 lorem ipsum 文本以使其工作。所以我的内容被添加到标签和 UILabel 调整大小以及包含标签调整大小的视图。我在调整滚动视图内容的大小时遇到​​问题,以便在标签中的文本较长时可以滚动。这也是我当前的代码:

我也在使用 PureLayout,因为这是我能够制作标签并根据文本长度调整视图大小的唯一方法。

0 投票
1 回答
450 浏览

ios - 以编程方式使用滚动视图

我正在尝试使用仅以编程方式创建的 UI 开发应用程序。我想创建一个简单的视图,它是一个 UIScrollView(当键盘出现时能够滚动视图)和一个容器视图(UIView),我们可以在其中找到一个按钮。

我正在使用 PureLayout 来简化约束的设置,swift 4,Xcode 9.2 beta

在这个视图的类下面

下面是嵌入前一个视图的 UIViewController 子类的代码

不幸的是,结果不是预期的:见下文

我错过了什么?缺少不同的点: - 按钮的位置很奇怪(按钮和按钮的顶部/左侧之间的空间部分隐藏在屏幕之外) - 容器视图不可见(backgroundColor = UIColor.yellow 无效)

提前谢谢你!

//////////////////////////// 编辑 ///////////////////// ///////////

下面是使用 UIView 而不是 UIScrollView 的完全相同代码的屏幕截图

在此处输入图像描述

0 投票
2 回答
53 浏览

ios - 我们应该把我们的自动布局代码放在哪里?

我通常在我的视图控制器的 updateCONstratins 方法中设置我所有的自动布局代码,用于定义视图的所有子类的约束。然后在子视图中,我将约束放在 updateConstraints 方法中。这使我拥有班级中每个视图的属性,因此我可以稍后在将 translate.... 设置为 false 后引用它。但我读到您不必在 updateConstraints 中设置它。只是我没有读过一篇文章,有人说苹果工程师说如果约束只做一次,那么你几乎可以把它们放在任何地方。但是,如果您有在视图生命周期中发生变化的约束,您可以将它们放在 updateConstraints 中吗?以下是链接http://swiftandpainless.com/where-to-put-the-auto-layout-code/ http://swiftandpainless.com/dont-put-view-code-into-your-view-controller/

那么它应该去哪里呢?这只是一种旧的方式,现在它已经改变了吗?

0 投票
1 回答
159 浏览

swift - 如何使用 PureLayout 将标签分开

我在让 PureLayout 与UILabel's 一起工作时遇到了一些麻烦,我将它们放在我的视图中并试图彼此分开

我有一个标签,它与视图顶部和视图左侧有一定的间距。然后我有一个辅助标签,它也应该放置在视图左侧的一些边距处,然后从第一个标签的底部隔开相同数量的边距

theautoPinEdge似乎想UIView引用边界,而 aUILabel显然不是 aUIView所以我试图弄清楚如何让它工作

我的第一个想法是创建新视图来保存标签,这样我就可以引用视图来获取坐标等,但它们现在没有出现在视图中,这是基本设置

然后我尝试设置所有约束

我在上面使用的所有其他元素都显示得很好,但我不明白为什么这些不是,它们只是标签时,但我无法获得使用它们的约束。

0 投票
1 回答
552 浏览

ios - 无法使用 PureLayout 将标签定位到视图的右边缘

我找到了一个很棒的教程,它解释了一个很好的但是关于如何使用 PureLayout 来做一些很酷和简单的布局的东西。我在让我的标签与我试图放入的视图的右侧对齐时遇到了一些问题

我在班上名列前茅

然后我有这个viewDidLoad()

我有一个override func updateConstraints()功能

这是我得到的结果看起来像这样......

在此处输入图像描述

我不明白为什么会这样

更新

我已经稍微清理了视图和标签以使其更清晰,我能够解决我需要在视图中嵌入标签以使PureLayout库正常工作的问题,希望这可以更好地说明我的代码说明了我在屏幕上看到的内容

据我在检查员中可以看出,当我突出显示scrollView嵌入其中的标签时,那里有我容器的全宽,标签本身似乎有一个宽度等,我只是不知道为什么我可以' t 对齐右边缘,左边缘没有问题。

当我检查模拟器时,我在旁边看到这个图标,openNowLabel但我不确定它的含义或如何获取有关它的信息,这与我的问题有关吗?

在此处输入图像描述

这是我上传的 repo 的链接,其中包含运行所需的所有 pod,看看我所看到的原始上下文是否有助于它有意义

https://github.com/Jordan4jc/place-app-test

0 投票
1 回答
302 浏览

ios - Swift 自定义 TableViewCell(卡片)

我正在尝试制作一张类似卡片的卡片cell(看起来像是自己漂浮的卡片)。现在,我只是想让一个红色UIView出现在单元格内(为边距填充 12 个像素)。这是该UITableViewCell课程的代码:

目前我得到一个空白tableView。没有红色视图出现。任何人都知道我缺少的那块拼图(PS 我正在使用 PureLayout)

0 投票
2 回答
130 浏览

ios - 除非我将视图添加到容器视图而不是 contentView,否则 UITableViewCell 不起作用

背景

这是参考这篇文章(TLDR;如果您正确使用自动布局,则应自动计算 UITableViewCell 高度)。

问题

如果我将视图直接添加到contentView,我会不断收到此错误:

我的问题是这部分

它坚持 tableViewCell 高度只是标准的 44 (因此忽略了我所有的自动布局工作!

唯一能解决问题的就是运行这个

这很奇怪,b/c 它没有记录在任何地方,并且在宏伟的计划中没有意义。

这是整个UITableViewCell 代码供参考。