gpt4 book ai didi

ios - ScrollView 动态高度问题

转载 作者:行者123 更新时间:2023-11-29 05:25:55 27 4
gpt4 key购买 nike

在我的应用程序中,我有具有动态高度的 ScrollView 。其中有一个 TextView 和一个表格 View - 两者都具有动态高度和禁用滚动功能。这两个元素每次仅显示一次,因此如果 TextView 可见,则 TableView 不可见。

我的问题是,屏幕加载后, ScrollView 高度无法正确计算,并且当您第一次切换到 TableView 时 - 它被背景 UIView 覆盖。

如下所示:

第一张图片 - 屏幕刚刚打开,初始位置。

第二张图片 - 切换到表格 View ,它被背景 View 覆盖。 First position Second position

这是我的代码:

override func viewDidLoad() {
super.viewDidLoad()
output?.viewIsReady()

setSpeakerData()

contentTableView.register(UINib(nibName: "SpeakerEventsTableViewCell", bundle: nil), forCellReuseIdentifier: "speakerEventsTableViewCell")
}

override func viewWillAppear(_ animated: Bool) {
showSpeakerInfo()
}

func showSpeakerInfo() {
aboutSpeakerTextView.isHidden = false
contentTableView.isHidden = true
aboutSpeakerTextView.sizeToFit()
aboutSpeakerView.backgroundColor = blueColor
eventsView.backgroundColor = UIColor.clear
contentTableViewHeight.constant = aboutSpeakerTextView.frame.height
}

func showSpeakerEvents() {
aboutSpeakerTextView.isHidden = true
contentTableView.isHidden = false
aboutSpeakerView.backgroundColor = UIColor.clear
eventsView.backgroundColor = blueColor
contentTableViewHeight.constant = contentTableView.contentSize.height
contentTableView.reloadData()
}

奇怪的是,当您在选项卡之间切换多次时 - 一切都开始正常工作,并且 TableView 不会被背景 UIView 覆盖。

如果有任何帮助,我们将不胜感激!提前致谢!

最佳答案

进一步发现,该错误仅在 TextView 有 1 行文本时出现。当它有 2 条以上的线时 - 它就消失了。我不知道是 Xcode、Swift 还是我导致了这个)

因此,为了克服这个错误,我在从服务器收到的原始文本中添加了一行明文,并且它按预期工作。

这不是推荐的解决方案,但既然它有效 - 为什么不呢?

这是我的代码现在的样子:

func setSpeakerData() {
let originalTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(red: 0.41, green: 0.43, blue: 0.51, alpha: 1.0),
NSAttributedString.Key.font: UIFont(name: "Roboto-Light", size: 14.0) as Any]
let dummyTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.clear,
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15)]

let partOne = NSMutableAttributedString(string: speaker[0].speakerDetailedText, attributes: originalTextAttributes)
let partTwo = NSMutableAttributedString(string: randomText, attributes: dummyTextAttributes)

let combination = NSMutableAttributedString()

combination.append(partOne)
combination.append(partTwo)

speakerImageView.kf.setImage(with: URL(string: speaker[0].speakerImage), placeholder: UIImage(named: "PlaceholderImage"))
speakerNameLabel.text = speaker[0].speakerName
speakerPositionLabel.text = speaker[0].speakerPosition

aboutSpeakerTextView.attributedText = combination
}

关于ios - ScrollView 动态高度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175540/

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