Scroll View动态高度问题

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

在我的应用程序中,我具有动态高度的滚动视图。在其中有一个“文本视图”和一个“表视图”-均具有动态高度和禁用滚动功能。这两个元素每次仅显示一次,因此,如果“文本视图”可见,则“表视图”不可见。

我的问题是,在屏幕加载后,滚动视图的高度无法正确计算,并且当您首次切换到表格视图时,它会被背景UIView覆盖。

这里是这样:

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

第二图像-切换到表格视图,在该视图中被bg视图覆盖。First positionSecond 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()
}

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

非常感谢您的帮助!预先感谢!

ios swift uitableview uiscrollview uitextview
1个回答
0
投票

进一步的发现表明,该错误仅在文本视图具有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
}
© www.soinside.com 2019 - 2024. All rights reserved.