gpt4 book ai didi

ios - UIScrollView 中的 ViewController 约束,使用 Storyboard

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:10 26 4
gpt4 key购买 nike

我有两个 UIViewControllers, Storyboard标识符为“vc0”和“vc1”,我试图在启用分页的情况下实例化 UIScrollView 中的对象,以便这两个 View Controller 彼此相邻。目标是让用户左右滑动以在 View Controller 之间滑动,类似于 SnapChat。

当运行我的代码时, ScrollView 的第一页包含第一个 View Controller ,而第二页什么也没有。我假设这是因为第一个 View Controller 与第二个 View Controller 重叠。我怎样才能改变我的约束(或任何东西)来解决这个问题,以便 vc0 的右边缘与 vc1 的左边缘相交?

UIScrollView 包含在 UIView 中,在 View Controller 中。这是包含所有相关代码的 viewDidLoad()。请让我知道我应该提供的任何其他有用信息。

override func viewDidLoad()
{
super.viewDidLoad()

let screenWidth = self.view.frame.width
let screenHeight = self.view.frame.height

let vc0 = self.storyboard?.instantiateViewControllerWithIdentifier("vc0")

self.addChildViewController(vc0!)
self.scrollView.addSubview(vc0!.view)
vc0!.didMoveToParentViewController(self)

let vc1 = self.storyboard?.instantiateViewControllerWithIdentifier("vc1")

var frame1 = vc1!.view.frame
frame1.origin.x = self.view.frame.size.width
vc1!.view.frame = frame1

self.addChildViewController(vc1!)
self.scrollView.addSubview(vc1!.view)
vc1!.didMoveToParentViewController(self)

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height);

//ADD CONSTRAINTS TO vc0

vc0!.view.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = NSLayoutConstraint(item: vc0!.view, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: scrollView, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0)
view.addConstraint(horizontalConstraint)

let widthConstraint = NSLayoutConstraint(item: vc0!.view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenWidth)
view.addConstraint(widthConstraint)

let heightConstraint = NSLayoutConstraint(item: vc0!.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenHeight)
view.addConstraint(heightConstraint)

//ADD CONSTRAINTS TO vc1

vc1!.view.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint2 = NSLayoutConstraint(item: vc1!.view, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: vc0!.view, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0)
view.addConstraint(horizontalConstraint2)

let widthConstraint2 = NSLayoutConstraint(item: vc1!.view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenWidth)
view.addConstraint(widthConstraint)

let heightConstraint2 = NSLayoutConstraint(item: vc1!.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenHeight)
view.addConstraint(heightConstraint)
}

最佳答案

我觉得约束有问题!!

您应该将一个 View 添加到scrollview,然后将两个VC的 View 添加到该 View 而不是直接指向scrollview。

View 的大小应与scrollview 的内容大小相同

现在你的约束应该是这样的:

ScrollView :顶部、底部、前导、尾随

在 ScrollView 中查看:顶部、底部、前导、尾部、容器中的垂直中心(中心 Y)和固定宽度(因为你想要水平滚动),如果想要垂直滚动,那么约束应该是 (容器中的水平中心(中心 X)和固定高度。

并且您从两个 VC 的 View :top、leading、fixed width、fixed height(宽度和高度应与屏幕尺寸相同)

希望这会有所帮助:)

关于ios - UIScrollView 中的 ViewController 约束,使用 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37382721/

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