gpt4 book ai didi

ios - 如何设置自动布局约束,使 UILabel 在 UIScrollView 中保持垂直居中

转载 作者:行者123 更新时间:2023-11-28 07:54:56 26 4
gpt4 key购买 nike

我应该如何设置自动布局约束,以便多行标签在 ScrollView 中保持垂直居中,直到它的文本内容变得太长而无法一次显示?当文本长度变得太长时,文本应在顶部与 ScrollView 对齐,以便用户可以看到文本的开头并滚动查看更多内容。这就是我尝试设置约束的方式

对于 ScrollView :

  • 等高于:Superview
  • 将尾部对齐到:安全区域,等于 = -8
  • 将前导对齐到:安全区域,等于 8
  • 将顶部对齐到:安全区域

对于标签:

  • 领导空间:Superview
  • 等宽于:Superview
  • 将中心 Y 对齐到:Superview

我还在 viewDidLoad() 中添加了以下代码

scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: label.bottomAnchor).isActive = true

问题是,但我仍然收到一些警告,并且文本最终在 scrollview 中“垂直居中”,无法真正滚动到它的开头或结尾,即使它不能完全容纳在里面。对于 ScrollView ,我收到警告说它“具有不明确的可滚动内容宽度”,而对于标签,我收到警告“缺少尾随约束,这可能会导致与其他 View 重叠”

最佳答案

如何将标签高度限制为 scrollView 的 super View 的高度?在这种情况下,label 将始终与显示它的屏幕一样大,并且由于默认情况下 UILabel 中的文本垂直居中,您将得到您想要的想。请参阅以下 Playgrounds 示例以供引用:

import PlaygroundSupport
import UIKit

class A: UIViewController {
let scrollView = UIScrollView()
let label = UILabel()

override func viewDidLoad() {
self.view.backgroundColor = .white
self.view.addSubview(scrollView)
self.scrollView.addSubview(label)

label.numberOfLines = 0

label.text = "How should I setup auto layout constrains so that multiline label stays vertically centered inside scrollview until it's text content becomes too long to be shown at once?"

scrollView.translatesAutoresizingMaskIntoConstraints = false
label.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
scrollView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
scrollView.leftAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leftAnchor),
scrollView.rightAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.rightAnchor),

label.leftAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leftAnchor),
label.rightAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.rightAnchor),
label.topAnchor.constraint(equalTo: self.scrollView.topAnchor),
label.bottomAnchor.constraint(equalTo: self.scrollView.bottomAnchor),

label.heightAnchor.constraint(greaterThanOrEqualTo: self.view.heightAnchor),

])
}
}

// Present the view controller in the Live View window
PlaygroundPage.current.liveView = A()

关于ios - 如何设置自动布局约束,使 UILabel 在 UIScrollView 中保持垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510758/

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