首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在滚动视图中更改UIView,同时/更新滚动视图高度- Swift 3/ Xcode 8

在滚动视图中更改UIView,同时/更新滚动视图高度- Swift 3/ Xcode 8
EN

Stack Overflow用户
提问于 2017-07-13 14:30:10
回答 2查看 2K关注 0票数 1

我有一个普通的带有滚动视图的ViewController。在滚动视图中有几个视图,一个标签和一些按钮。所有这些下面都是一个UIView。只要按下其中一个按钮,UIView就有多个视图控制器传递给它。传递给UIView的每个视图控制器都是一个不同高度的

用来解释的图片:

如何调整滚动视图以适应从按钮按下传入的新的视图控制器?

更新这里是我的代码:

代码语言:javascript
运行
复制
 @IBAction func didPressTab(_ sender: UIButton) {


    let previousIndex = selectedIndex
    selectedIndex = sender.tag
    buttons[previousIndex].isSelected = false
    let previousVC = viewControllers[previousIndex]
    previousVC.willMove(toParentViewController: nil)
    previousVC.view.removeFromSuperview()
    previousVC.removeFromParentViewController()
    sender.isSelected = true
    let vc = viewControllers[selectedIndex]
    addChildViewController(vc)


    print("1. NEW VIEW HEIGHT \(vc.view.frame.height)")
    print("1. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
    print("1. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
    print("1. CV HEIGHT \(contentView.frame.height)")
    contentView.layoutIfNeeded()
    height = vc.view.frame.size.height
    contentView.translatesAutoresizingMaskIntoConstraints = true
    contentView.frame.size.height = vc.view.frame.height
    vc.view.frame = contentView.bounds
    scrollView.contentSize.height = staticView.frame.height + height!
    contentView.addSubview(vc.view)



    print("2. NEW VIEW HEIGHT \(vc.view.frame.height)")
    print("2. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
    print("2. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
    print("2. CV HEIGHT \(contentView.frame.height)")

    vc.didMove(toParentViewController: self)




}

我可以让高度改变,但它只是使UIView的大小,一个正常的VC (667),这不是我所需要的,因为一些ViewControllers只有450英尺高。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-14 13:04:12

我找到解决办法了!

前言:视图控制器有一个假定的大小。(手机屏幕的大小)。这就是为什么每当我呈现一个视图时,向UIView添加一个视图时,它总是667 -(iPhone 6屏幕大小)。为了解决这个问题,我做了这个:

代码:

代码语言:javascript
运行
复制
if selectedIndex == 0 {

        vc.view.frame.size.height = 480

    }

    if selectedIndex == 1 {

        vc.view.frame.size.height = 448

    }

    if selectedIndex == 2 {

        vc.view.frame.size.height = 715

    }

    if selectedIndex == 3 {

        vc.view.frame.size.height = 480

    }

这是放置在IBAction内。就在、vc、定义之后。

票数 0
EN

Stack Overflow用户

发布于 2017-07-13 14:55:42

每当嵌入式视图控制器更改时,必须重新计算滚动视图内容大小的高度。新的高度是图像视图高度+按钮容器高度+内容视图高度。显然,您也必须调整容器视图的高度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45083676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档