gpt4 book ai didi

ios - 使用可视格式语言将 View 置于其父 View 的中心

转载 作者:IT王子 更新时间:2023-10-29 07:26:38 27 4
gpt4 key购买 nike

我刚开始学习 iOS 的 AutoLayout 并了解了 Visual Format Language。

一切正常,除了一件事:我无法让 View 在其父 View 中居中。
这对 VFL 是否可行,还是我需要自己手动创建约束?

最佳答案

目前,不,看起来不可能使用 VFL 将 View 置于父 View 的中心。然而,使用单个 VFL 字符串和单个额外约束(每个轴)并不难:

VFL:"|-(>=20)-[view]-(>=20)-|"

[NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:view.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.f constant:0.f];

有人会认为你可以简单地做到这一点(这是我最初看到这个问题时的想法和尝试):

[NSLayoutConstraint constraintsWithVisualFormat:@"|-(>=20)-[view(==200)]-(>=20)-|"
options: NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY
metrics:nil
views:@{@"view" : view}];

我尝试了上述的许多不同变体,试图让它按照我的意愿弯曲,但这似乎不适用于 super View ,即使在两个轴上明确具有两个单独的 VFL 字符串时也是如此 (H:|V:)。然后,我开始尝试准确地隔离选项何时执行应用于 VFL。它们似乎适用于 VFL 中的 super View ,并且只会适用于 VFL 字符串中提到的任何显式 View (在某些情况下令人失望)。

我希望在未来 Apple 添加某种新选项,让 VFL 选项考虑到 super View ,即使仅在 VFL 中除 super View 之外只有一个显式 View 时才这样做。另一种解决方案可能是将另一个选项传递给 VFL,它表示如下内容:NSLayoutFormatOptionIncludeSuperview

不用说,我在尝试回答这个问题时学到了很多关于 VFL 的知识。

关于ios - 使用可视格式语言将 View 置于其父 View 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12873372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com