gpt4 book ai didi

ios - ScrollView 内容大小

转载 作者:搜寻专家 更新时间:2023-11-01 05:57:24 25 4
gpt4 key购买 nike

我正在尝试在我尝试制作的小型应用程序的注册/加入页面上制作一个包含 3 张图片的 ScrollView 。我在下面使用这段代码:

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

var signInButton: UIButton!
var joinButton: UIButton!
var pageControl: UIPageControl!
@IBOutlet weak var scrollView: UIScrollView!
var colors:[UIColor] = [UIColor.redColor(), UIColor.blueColor(), UIColor.greenColor(), UIColor.yellowColor()]
var frame = CGRectMake(0, 0, 0, 0)

override func viewDidLoad() {
super.viewDidLoad()

signInButton = UIButton(frame: CGRectMake(1/3.0 * self.view.bounds.size.width, 5/6.0 * self.view.bounds.size.height, 23, 60))

joinButton = UIButton(frame: CGRectMake(2/3.0 * self.view.bounds.size.width, 5/6.0 * self.view.bounds.size.height, 23, 60))

pageControl = UIPageControl(frame: CGRectMake(1/2.0 * self.view.bounds.size.width, 70/100.0 * self.view.bounds.size.height, 23, 60))

self.view.addSubview(signInButton)
self.view.addSubview(joinButton)
self.view.addSubview(pageControl)

signInButton.addTarget(self, action: "signInButtonClicked:", forControlEvents: .TouchUpInside)
joinButton.addTarget(self, action: "joinButtonClicked:", forControlEvents: .TouchUpInside)
pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged)

configurePageControl()
scrollView.delegate = self

for index in 0...3 {
frame.size = scrollView.frame.size
frame.origin.x = scrollView.frame.size.width * CGFloat(index)
scrollView.pagingEnabled = true

let view: UIView = UIView(frame: frame)
view.backgroundColor = colors[index]
scrollView.addSubview(view)
}

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 4, self.scrollView.frame.size.height)
}

func configurePageControl() {
self.pageControl.numberOfPages = colors.count
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.redColor()
self.pageControl.pageIndicatorTintColor = UIColor.blackColor()
self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor()
}

我在我的 View Controller 上放置了一个 ScrollView (使用大小类 width: Anyheight: Any)并将 ScrollView 的所有四个边固定到 View Controller .出于某种原因,我添加到 ScrollView 的每个 View 的宽度都与 iPhone 不完全相同。

例如,当我尝试在 iPhone 6 上运行它时,第一个 View 超出了 iPhone 的宽度。这发生在第二个和第三个 View 中。我希望第一个 View 是 iPhone 的确切宽度,第二个 View 恰好位于第一个 View 的右侧,依此类推。似乎与超过 iPhone 宽度的第一个 View 有一些重叠。

这可能是因为我正在使用尺寸类(宽度:任意和高度:任意),我应该禁用尺寸类并为每个 iPhone 宽度添加一个 ScrollView ?

谁能帮我找出这里的问题。

最佳答案

添加:

scrollView.setNeedsLayout()
scrollView.layoutIfNeeded()

viewDidLoad() 方法的开头。

在使用自动布局时,在访问 View 的框架之前始终调用这两个方法,否则您可能会得到不正确的尺寸。

问题是当 viewDidLoad() 被调用时,你的 view 仍然有 600 的宽度(由于你的 Storyboard View Controller 600x600 的大小)。您的约束规定 ScrollView 的宽度应与设备的宽度相同,但这些约束仅在 viewDidLoad() 完成后应用,当计算自动布局的下一个计划通过时.添加上面的代码会强制自动布局执行一次传递,从而为您提供正确的框架尺寸,供您随后在尺寸计算中使用。

关于ios - ScrollView 内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096343/

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