您如何(手动)设置 contentLayoutGuide 的约束。 (以及如何删除任何“现有”的 - 有吗?)

问题描述 投票:0回答:0

在一些不寻常的情况下,在一个UIScrollView中,

var scroll UIScrollView

您想手动设置(我们可以说覆盖,强制)

scroll.contentSize
值。

这是有问题的,因为滚动视图会(正确地)不时设置 contentSize(显然基于内容)。因此,设置

contentSize
(据我所知)是相当棘手的,因为您必须经常将其强制调整为您的大小,并猜测何时发生。

但是,您可以设置

contentLayoutGuide
。事实上,系统会从中计算出
contentSize
,你就可以开始了。

我知道这样做的唯一方法是...

var specialHeightNSC: NSLayoutConstraint?

func example() {
    guard let sv = .. the relevant superview
    
    scroll.contentLayoutGuide.leftAnchor.constraint(equalTo: sv.leftAnchor).isActive = true
    scroll.contentLayoutGuide.rightAnchor.constraint(equalTo: sv.rightAnchor).isActive = true
    scroll.contentLayoutGuide.topAnchor.constraint(equalTo: sv.topAnchor).isActive = true
    
    specialHeightNSC =
        scroll.contentLayoutGuide.heightAnchor.constraint(equalToConstant: 666)
    amazingHeightOfContentLayoutGuideConstraint?.isActive = true
}

我通常只是在(第一次)调用 layoutSubviews 时调用它(这可能是也可能不是最好的地方,真的)。

有很多问题,例如,对于视图,您可以

.contraints
并发现视图上的所有约束。

contentLayoutGuide
似乎不可能!我不知道系统是否已经附加了其他约束,我找不到任何其他约束来删除它们等等。

简而言之您(手动)如何在 UIScrollView 上设置 contentLayoutGuide 的约束?

我从来没有在这个问题上找到任何 doco 或指导或成语。

请注意,此问题仅适用于您需要手动强制、设置、覆盖

contentLayoutGuide
.

的异常情况
ios swift uiscrollview
© www.soinside.com 2019 - 2024. All rights reserved.