【问题标题】:ScrollView Add SubView in swift 3ScrollView 在 swift 3 中添加子视图
【发布时间】:2023-03-30 09:47:01
【问题描述】:

我想尝试在滚动视图上添加视图表单,但视图没有完全添加到滚动视图的框架上,我的代码是:

import UIKit

class AddIncomeVC: UIViewController {
    @IBOutlet var scrollView: UIScrollView!
    @IBOutlet var views: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = views.frame.size
        scrollView.addSubview(views)

    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        views.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollView.frame.size.height)
    }

}

谢谢,

【问题讨论】:

  • 只需将一行views.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollView.frame.size.height) 改为views。 frame = CGRect(x: 0, y: 0, width: scrollView.bounds.width, height: scrollView.bounds.hight)
  • @Himanshu,遇到同样的问题,
  • 兄弟,如果你需要,然后使用约束它的面糊来管理你的屏幕,然后我会告诉你
  • 好的,怎么用?
  • 用主视图约束你的滚动视图 4 尺寸修复。然后在滚动视图中为您的滚动视图提供约束 4 大小修复并修复您的子视图的高度,然后将您的视图提供给滚动视图等宽,只需创建一个子视图高度约束的 IBoutlet 并管理您的问题解决

标签: ios swift3 uiscrollview scrollview


【解决方案1】:

编辑行

views.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollView.frame.size.height)

views.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height)

【讨论】:

  • 遇到同样的问题
  • 你是否在 Storyboard 中为 scrollView 设置了约束?
  • viewDidLoad中这行scrollView.contentSize = views.frame.size是错误的
  • 如果您想将视图大小设置为滚动视图内容大小,请在 viewDidLayoutSubViews 中执行此操作。在 viewDidLoad 故事板约束的时候不会被采取
  • 感谢您的回答
【解决方案2】:

我用这段代码解决了我的问题:

import UIKit

class AddIncomeVC: UIViewController {
    @IBOutlet var scrollView: UIScrollView!
    @IBOutlet var views: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = views.frame.size
        scrollView.addSubview(views)


    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        views.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)

    }

}

感谢大家为我的问题提供宝贵的时间。

【讨论】:

    【解决方案3】:

    问题是:在视图确实加载时,您的约束没有更新为新的显示尺寸。 我相信您的问题会出现,因为您正在使用与故事板不同大小的模拟器运行应用程序......更大的尺寸(例如,使用 iPhone SE 并在 iphone 6 模拟器上运行的故事板)。

    在 View did Load 时,您的视图已经存在,它是真的......但它的约束仍然有 iphone SE 大小。

    因此,在视图确实加载时,您将内容大小(您想要的 iphone6 屏幕大小)设置为等于情节提要视图大小(仍然是 iphone SE 屏幕大小)。

    您的解决方案效果很好。在 iOS 布局所有子视图之后,约束更新为新的屏幕尺寸,保持其比例。 在 viewDidLayoutSubviews 中,“视图”已经有正确的约束值了……所以,视图有 iphone6 的屏幕尺寸,你可以设置右边的框架

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多