簡體   English   中英

Scrollview ContentSize

[英]Scrollview ContentSize

我正在嘗試為一個我要制作的小應用程序在注冊/加入頁面上制作3張圖片的滾動視圖。 我在下面使用此代碼:

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()
    }

我在我的視圖控制器上放置了一個滾動視圖(使用size類width: Anyheight: Any ),並將scrollview的所有四個側面固定在視圖控制器上。 由於某種原因,我添加到滾動視圖中的每個視圖的寬度與iPhone的寬度並不完全相同。

例如,當我嘗試在iPhone 6上運行它時,第一個視圖超出了iPhone的寬度。 第二和第三種觀點就是這樣。 我希望第一個視圖是iPhone的確切寬度,第二個視圖恰好在第一個視圖的右邊,依此類推。 超出iPhone寬度的第一個視圖似乎有些重疊。

難道是因為我正在使用尺寸類別(寬度:任意和高度:任意),並且應該禁用尺寸類別並為每個iPhone寬度添加滾動視圖?

有人可以幫我在這里找到問題。

加:

scrollView.setNeedsLayout()
scrollView.layoutIfNeeded()

viewDidLoad()方法的開頭。

使用“自動版式”訪問視圖的框架之前,請始終調用這兩種方法,否則可能會得到不正確的尺寸。

問題在於,當調用viewDidLoad()時, view的寬度仍為600 (由於故事板視圖控制器的大小為600x600 )。 您的約束條件要求滾動視圖的寬度應與設備的寬度相同,但是這些約束條件僅 viewDidLoad()完成后才計算自動布局的下一個計划遍次時應用。 在上面添加代碼會強制自動布局執行一次傳遞,從而為您提供正確的幀尺寸,以供以后在尺寸計算中使用。

將滾動視圖放在中,設置約束。 然后抓取一個UIView,將其放在滾動視圖中,將其設置為相等的寬度,相等的高度,然后居中(使用CTRL +拖動到滾動視圖,您將獲得一個小的彈出菜單)

然后將您的內容放在剛創建的UIView中... Bam! 還是為了個人,我個人將UIView重命名為ContentView

這是一個幫助屏幕:

在此處輸入圖片說明

現在我自己仍然對高度有疑問,我通常只對內容視圖使用固定的高度,因為如果不這樣做,它就不會滾動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM