ios - 使用自动布局将 View 定位在 (c + (x * superview.width))

标签 ios objective-c xcode autolayout

目前我对自动布局有点困惑。我在 .xib 文件中有一个 UITableViewCell:

Table view cell

我的目标是从第一行所在的位置 (x = 74) 开始,在单元格上获得一组水平等间距的垂直线。

我一直在尝试自动布局约束的大量组合,但我似乎无法做到正确。使我最接近的约束如下:

Constraints attempt 1

但是,multiplier 让我很困惑。在第一个屏幕截图中,multiplier621(从左到右),考虑到 View 的位置,这对我来说意义不大。

最终目标基本上是让每一行定位在:(c + (x * superview.width))其中 c74 在这种情况下,x乘数

有人可以在这里给我一些指示吗?谢谢!

最佳答案

我想如果您使用间隔 View ,您可能会发现事情更容易。使用尽可能多的垂直线之间的差距。将它们的宽度限制为相等。限制水平间距,使它们按顺序 [line][spacer][line]….

但是,要解决您提出的问题:选择第一个项目的弹出菜单(在您的屏幕截图中读取 Superview.Center X)并告诉 Xcode 交换第一个和第二个项目。乘数适用于第二项的属性。

约束的一般形式是:

firstItem.firstAttribute == secondItem.secondAttribute * multiplier + constant

(关系也可以是 <=>=。)

您的屏幕截图转换为:

Superview.Center X == Image View.Center X * 6 + 69

您乘以 ImageView 的中心 X 坐标,考虑到您描述的目标,这没有意义。你大概想要这样的东西:

Image View.Center X == Superview.Width * 1/3 + 69

问题是,如果“有效”被定义为“水平等距的垂直线”,您将永远找不到适用于所有设备/方向(具有不同宽度)的乘数。为此,您需要:

Image View.Center X == (Superview.Width - 69) * 1/3 + 69

也就是说,您需要乘以宽度减去起点后的余数。

您可以在 subview 中嵌入线条,在这种情况下您不需要 69 磅的起始值。

关于ios - 使用自动布局将 View 定位在 (c + (x * superview.width)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753740/

相关文章:

ios - 当 crashLayers 为 YES 时,核心图不显示带图像的轴标签

ios - 修复有关模拟器在使用中和失去连接的 XCode 错误

iphone - iOS:推送通知并在登录时重新注册设备。

ios - 添加 Flurry 库后的链接器错误

iphone - 更新启动/启动不工作

iOS CoreData : How to setup the core data "connection"? Stanford UIDocument vs. Apple 模板?

ios - 基于可变数量的参数构建 NSString

objective-c - 我更改 UIBUtton 背景图像的方式有什么问题?

xcode - SourceKitService 非常高的内存使用率

ios - uiview 大小问题 Xcode