Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 滚动查看动态高度问题_Ios_Swift_Uitableview_Uiscrollview_Uitextview - Fatal编程技术网

Ios 滚动查看动态高度问题

Ios 滚动查看动态高度问题,ios,swift,uitableview,uiscrollview,uitextview,Ios,Swift,Uitableview,Uiscrollview,Uitextview,在我的应用程序中,我有动态高度的滚动视图。 在它里面有一个文本视图和一个表格视图-都有动态高度和滚动禁用。 这两个元素每次只显示一次,所以如果文本视图可见,则表视图不可见 我的问题是,在屏幕加载的滚动视图高度没有得到正确的计算之后,当你第一次切换到表格视图时,它被背景视图覆盖了 下面是它的样子: 第一个图像-屏幕刚刚打开,初始位置 第二个图像-切换到表视图,在那里它被bg视图覆盖。 这是我的密码: override func viewDidLoad() { super.viewDidL

在我的应用程序中,我有动态高度的滚动视图。 在它里面有一个文本视图和一个表格视图-都有动态高度和滚动禁用。 这两个元素每次只显示一次,所以如果文本视图可见,则表视图不可见

我的问题是,在屏幕加载的滚动视图高度没有得到正确的计算之后,当你第一次切换到表格视图时,它被背景视图覆盖了

下面是它的样子:

第一个图像-屏幕刚刚打开,初始位置

第二个图像-切换到表视图,在那里它被bg视图覆盖。

这是我的密码:

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()
}
奇怪的是,当您在选项卡之间切换多次时,一切都开始正常工作,而表格视图并没有被背景视图覆盖


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

进一步的发现表明,只有当文本视图有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
}

如何将组件添加到视图控制器的主视图中?这个覆盖表视图的背景视图是什么?尝试将调用的方法放入
DispatchQueue.main.async
?@AhmadF My hierarchy:Scroll view->UIView(覆盖表视图的视图)->其他视图,如文本视图、表视图按钮等@MumtazHussain不太明白这有什么帮助
showSpeakerInfo
showSpeakerEvents
稍后通过按钮操作调用