在scrollView的顶部,我有一个imageView,我希望它位于屏幕的顶部,但无论我尝试什么,我都找不到将其放在屏幕顶部的方法。它从状态栏下方开始。 这是它的样子:
这就是我想要的:
以下是限制:
NSLayoutConstraint.activate([
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor),
contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor),
imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
imageView.topAnchor.constraint(equalTo: contentView.topAnchor),
imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
imageView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.45), ]) }
我尝试过但没有解决:
scrollView.contentInsetAdjustmentBehavior = .never
有一种解决方案有效,但我认为这不是最好的方法:
scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: -130),
当我向滚动视图的顶部锚添加一个常量时,它解决了问题。然而,在其他屏幕上,例如 iPad 或 iPhone X,我需要相应地调整这个常数。我不确定计算状态栏的高度然后动态调整约束是否是最好的方法。我觉得一定有更简单的方法。
scrollView.topAnchor.constraint(等于:view.safeAreaLayoutGuide.topAnchor),
这意味着滚动视图的顶部是状态栏的底部。如果你不想这样,就不要这么说。相反,将滚动视图的顶部固定到其超级视图的顶部,并且 also 配置自动内容插入调整,以便图像的顶部最初不会自动放置在状态栏的底部:
/// ...
scrollView.topAnchor.constraint(equalTo: view.topAnchor),
/// ...
scrollView.contentInsetAdjustmentBehavior = .never